Import-CSV和Foreach

时间:2013-03-02 10:04:43

标签: powershell csv foreach

我有一个巨大的逗号分隔的CSV列表,其中包含我想要运行查询的网络的IP地址。我的CSV输入示例:

172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4

等......

当我运行以下代码来测试输出时:

$filepath = "c:\scripts\servers.csv" 
$servers = Import-CSV $filepath -delimiter "," 

Foreach ($server in $servers) {
     write-host $server

}

我没有输出,我认为这是因为没有指定标题。我显然可以解决方法并打开CSV文件并输入所有标题。有没有其他方法可以解决这个问题?

4 个答案:

答案 0 :(得分:20)

您可以动态创建标题(当分隔符是逗号时无需指定分隔符):

Import-CSV $filepath -Header IP1,IP2,IP3,IP4 | Foreach-Object{
   Write-Host $_.IP1
   Write-Host $_.IP2
   ...
}

答案 1 :(得分:0)

$IP_Array = (Get-Content test2.csv)[0].split(",")
foreach ( $IP in $IP_Array){
    $IP
}

Get-content Filename为每一行返回一个字符串数组。

仅在第一个字符串上,我根据“,”拆分它。将其转储到$ IP_Array。

$IP_Array = (Get-Content test2.csv)[0].split(",")
foreach ( $IP in $IP_Array){
  if ($IP -eq "2.2.2.2") {
    Write-Host "Found $IP"
  }
}

答案 2 :(得分:0)

解决方法是更改​​分隔符。

csv文件的内容 - >注意..还有空格和值

值为6荷兰语aap,noot,mies,Piet,Gijs,Jan

Col1;Col2;Col3

a,ap;noo,t;mi es

P,iet;G ,ijs;Ja ,n



$csv = Import-Csv C:\TejaCopy.csv -Delimiter ';' 

答案:

Write-Host $csv
@{Col1=a,ap; Col2=noo,t; Col3=mi es} @{Col1=P,iet; Col2=G ,ijs; Col3=Ja ,n}

可以读取CSV文件并使用其他分隔符来分隔每列。

它适用于我的脚本: - )

答案 3 :(得分:0)

$filepath = ".\ADcomputerslist.csv" $servers = Import-CSV $filepath -delimiter ","

Foreach ($servers 中的 $entry) { write-host $entry.name }

也可以用对象替换愚蠢的文件。

$servers = Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemVersion,ipv4Address

Foreach ($servers 中的 $entry) { write-host $entry.name }