我现在已经开始自动化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 "----------"
}
答案 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