-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathReadCsv.ps1
57 lines (52 loc) · 1.29 KB
/
ReadCsv.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function Read-Csv {
<#
.Synopsis
Read comma-separated values (csv). $target can be a URL, a file, or a string
.Example
#$file = "targetData.csv"
$url = 'https://raw.githubusercontent.com/dfinke/ImportExcel/master/Examples/JustCharts/TargetData.csv'
$str = @"
"Cost","Date","Name"
"1.1","1/1/2015","John"
"2.1","1/2/2015","Tom"
"5.1","1/2/2015","Dick"
"11.1","1/2/2015","Harry"
"7.1","1/2/2015","Jane"
"22.1","1/2/2015","Mary"
"32.1","1/2/2015","Liz"
"@
$str, $url | Read-Csv
Cost Date Name
---- ---- ----
1.1 1/1/2015 John
2.1 1/2/2015 Tom
5.1 1/2/2015 Dick
11.1 1/2/2015 Harry
7.1 1/2/2015 Jane
22.1 1/2/2015 Mary
32.1 1/2/2015 Liz
1.1 1/1/2015 John
2.1 1/2/2015 Tom
5.1 1/2/2015 Dick
11.1 1/2/2015 Harry
7.1 1/2/2015 Jane
22.1 1/2/2015 Mary
32.1 1/2/2015 Liz
#>
param(
[Parameter(ValueFromPipeline)]
$target,
$Delimiter = ","
)
Process {
if ([System.Uri]::IsWellFormedUriString($target, [System.UriKind]::Absolute)) {
ConvertFrom-Csv (Invoke-RestMethod $target) -Delimiter $Delimiter
}
elseif (Test-Path $target -ErrorAction SilentlyContinue) {
Import-Csv $target -Delimiter $Delimiter
}
else {
ConvertFrom-Csv $target -Delimiter $Delimiter
}
}
}