从CSV文件导入后,在对象数组中查找值

时间:2014-02-28 21:14:14

标签: powershell

我正在使用Import-Csv从CSV文件中读取值,其中包括服务器名称,IP地址和注释字段

是否有内置机制来根据服务器名称查找对象而无需遍历整个数组?

我将数组保留在内存中多次使用。

$ServerList = Import-Csv ".\ServerList.csv"

我正在使用Powershell Studio创建一个GUI,并填充一个下拉列表,其中包含从文件中读入的所有服务器名称。用户将从下拉列表中选择一个服务器,并且将有按钮使用读入的IP地址在该服务器上执行操作。

3 个答案:

答案 0 :(得分:0)

$csv = Import-csv my.csv | where {$_.servername -eq "MyServer"}
foreach ($server in $csv) {
 # Do your thing
}

答案 1 :(得分:0)

如果需要多次调用,可以使用用户选择服务器时调用的函数:

function getServer($selectedServer){
    $ServerInfo = Import-Csv ".\ServerList.csv" | where {$_.servername -eq $selectedServer}
    return $ServerInfo 
}

当用户做出选择时,代码就像这样:

$Server = getServer('ABCSRV')

然后$Server.IP$Server.Notes将获得该特定服务器的信息,并授予您在csv中使用这些列的权限。

答案 2 :(得分:0)

您可以使用服务器名称作为密钥填充带有CSV数据的哈希表:

$ServerList = @{}
Import-Csv '.\ServerList.csv' | % { $ServerList[$_.ServerName] = $_ }

这样你可以像这样访问数据:

$server = 'foo'
$ServerList[$server].IPAddress