在文件列表中查找读取主机值

时间:2015-06-18 14:28:56

标签: powershell

我现在已经开始自动化IDRAC了。我的下面的脚本将查看服务器名称和IDRAC IP列表。我想让用户输入一个Servername" S0000A01PX'或其他任何东西,并在服务器IDRAC IP的主列表中搜索。现在,脚本将打开列表中的每个服务器的虚拟控制台。我只需要它来选择只有用户条目。如何搜索该文件,找到用户输入的servername旁边的IP,并仅打开该服务器名称的IDRAC?

CSV中的内容示例

computername    iPiDRAC
S0000A01PX  10.122.2.11

脚本

$machinename = ""
$file = Import-Csv 'c:\temp\powershell\Branch Server IDRAC.csv'
$filelength = $file.length
$machine = Read-Host 'What is your Server?'
foreach ($line in $file){
    $DRACip = $line.iPiDRAC
    $DRACpw=cscript c:\PassGen1.vbs $machinename
    $DRACpw=$DRACpw[3]
    $DRACip
    $machinename
    $DRACPW
    $openIDRAC="http://"+$DRACip+"/console"
    $openIDRAC
    start $openIDRAC
    write-host "----------"
}

2 个答案:

答案 0 :(得分:1)

如果您只是希望获得一般匹配并返回启动,那么所有符合简单更改的DRAC都可以帮助您实现目标。 Where-Object{$_.computername -match $machine}

$machinename = ""
$file = Import-Csv 'c:\temp\powershell\Branch Server IDRAC.csv'
$machinename = Read-Host 'What is your Server?'

$file | Where-Object{$_.computername -match $machinename} |ForEach-Object{
    $DRACip = $_.iPiDRAC
    $DRACpw=cscript c:\PassGen1.vbs $machinename
    $DRACpw=$DRACpw[3]
    $DRACip
    $machinename
    $DRACPW
    $openIDRAC="http://"+$DRACip+"/console"
    $openIDRAC
    start $openIDRAC
    write-host "----------"
}

你正在混合输出和写主机,这可能会让你陷入困境,所以我会删除一些额外的漏洞,我将假设它只是用于测试。我没有看到您使用$DRACpw$machinename的位置,除非您在登录DRAC时需要注意哪些内容

答案 1 :(得分:0)

我想你想要一些Where-Object。

对于此CSV文件:

computername,iPiDRAC
S0000A01PX,10.122.2.11

按原样导入文件:

$file = Import-Csv 'c:\temp\powershell\Branch Server IDRAC.csv'

提出你的问题:

$machine = Read-Host 'What is your Server?'

在$ file数组中查找服务器名称,该名称将在CSV中输出表示该行的对象,然后获取其iPiDRAC属性:

($file | Where-Object {$_.computername -eq $machine}).iPiDRAC
10.122.2.11