好吧所以我对powershell很新,我可以导入一个没有任何标题的csv文件。 (我手动添加它)我的数组看起来像这样。
Servers
Plab2
192.168.10.204
当我遍历数组而不是能够抓住" Plab2"或" 192.168.10.204"我得到" @ {Server = Plab2}"或" @ {Server = 192.168.10.204"有没有什么方法可以抓住价值" Plab2"或" 192.168.10.204"?
这是我的代码
$list = Import-Csv $inputFile -Header Server
For($i=0; $i -le $List.Count -1; $i++){
$b = $List[$i][0]
Write-Host $b
}
答案 0 :(得分:3)
您获得的格式是因为数组中的每个对象都是具有属性" Server"的对象(在-Header Server
中指定。
您的文件不是csv文件。 csv文件具有一行上相同对象的属性(如名称和IP),由分隔符分隔(例如逗号,
)。所以您可以执行以下操作之一:
使用Get-Content
将文件作为纯文本阅读,然后选择元素(名称和IP)
$arr = Get-Content $inputFile
$arr[1]
$arr[2]
Plab2
192.168.10.204
您可以访问循环中每个对象的Server
属性以获取值。
Import-Csv $inputFile -Header Server | ForEach-Object {
Write-Host $_.Server
}
Servers
Plab2
192.168.10.204
您还可以将文件重写为正确的csv格式,例如:
csvfile:
ServerName,IP
Plab2,192.168.10.204
脚本:
Import-Csv $inputFile | % {
$_.ServerName
$_.IP
}
Plab2
192.168.10.204
答案 1 :(得分:1)
我认为这就是你想要的:
$list = Import-Csv $inputFile -Header Server
$list | Foreach-Object { Write-Host $_.Server }
请注意
$list | Foreach-Object { Write-Host $_.Server }
可以缩写为
$list | %{ Write-Host $_.Server }
此外,如果这不是从另一个脚本调用的东西(即你不介意从管道中返回项目),你可以像这样写这行:
$list | %{ $_.Server }