我从scvmm中获取VM的数据,如名称和VMhost,并存储到变量$a中
我有VM名称ex: win10-jde,我想通过使用if语句获得win10-jde名称和vmhost的详细信息,它失败了任何帮助。
$b = "win10-jde"
$a = Get-SCVirtualMachine | Select-Object name, vmhost
if ($b -match $a){
Write-Output "$b"
}$a输出是:
PS C:\Users\scvmmadmin> $a
Name VMHost
---- ------
ks-finaltest slcae661.us.oracle.com
slc12vbv slcaf782.us.oracle.com
slc12vbw slcap322.us.oracle.com
iSCSItestK-4 slcae212.us.oracle.com
slc12uzz slcae661.us.oracle.com
slc12uzs slcae661.us.oracle.com
Test_Stage01 slcae212.us.oracle.com
slc12vbi slcae662.us.oracle.com
slc12vca slcaf782.us.oracle.com
slc12vaa slcae660.us.oracle.com
slc12vau slcap323.us.oracle.com
slc12uzu slcae661.us.oracle.com
slc12vbz slcac038.us.oracle.com
slc12uys slcae212.us.oracle.com
1511Test_01 slcae662.us.oracle.com
slc12vbk slcac038.us.oracle.com
slc12vbq slcac038.us.oracle.com
slc12vbm slcap324.us.oracle.com
slc12vat slcap322.us.oracle.com
iSCSITestG-2 slcae212.us.oracle.com
slc12uyx slcap323.us.oracle.com
slc12vbu slcac038.us.oracle.com
slc12vcb slcae662.us.oracle.com
slc12vas slcae212.us.oracle.com
slc12uyl slcae212.us.oracle.com
Win2016-JDE slcac038.us.oracle.com
slc12vab slcae660.us.oracle.com
slc12vac slcap323.us.oracle.com
Win10JDE-Bare slcac038.us.oracle.com
slc12vcc slcaf782.us.oracle.com
JOuten-WorkStation (Do Not Delete) slcap322.us.oracle.com
Win10-JDE slcac038.us.oracle.com
slc12uyw slcaf782.us.oracle.com
slc12uza slcae212.us.oracle.com
slc12vag slcac038.us.oracle.com
slc12uyv slcae662.us.oracle.com
slc12uyt slcap322.us.oracle.com
Win10JDE-Bare slcac038.us.oracle.com
iSCSItestD-3 slcae212.us.oracle.com
slc12vax-original slcap322.us.oracle.com
2012x64Test slcaf782.us.oracle.com
slc12uyu slcaf782.us.oracle.com
slc12vbf slcap324.us.oracle.com
iSCSItestK-2 slcae212.us.oracle.com
iSCSItestF-1 slcae212.us.oracle.com
slc12vas slcae212.us.oracle.com
Clone_Win2012R2BareOS-May-2017 slcae212.us.oracle.com
slc12vao slcac038.us.oracle.com
slc12uzb slcap322.us.oracle.com
slc12var slcae212.us.oracle.com
1511Test_02 slcae212.us.oracle.com
Win10-JDE slcac038.us.oracle.com
slc12vbl slcae662.us.oracle.com发布于 2017-12-13 19:39:42
您需要通过foreach循环运行包含VM详细信息的对象。而且,我将使用-eq而不是-match,因为-match用于匹配正则表达式。下面有更多..。试着做这样的事情:
$b = "win10-jde"
$VMs = Get-SCVirtualMachine | Select-Object name, vmhost
ForEach ($VM in $VMs)
{
$Name = $VM.Name
$VMHost = $VM.vmhost
if ($b -eq $Name)
{
Write-Output "$VM"
}
}现在,-match操作符。一个变量将“匹配”另一个变量,如果它等于或包含在与其进行比较的变量中。例如:“蓝色”将与“蓝鲸”相配。比较运算符-eq要求一个变量与它要比较的变量相同,以便使比较成为真。
我希望这能帮到你!
发布于 2017-12-14 03:59:50
在这里,您尝试将字符串$b与对象$a进行比较,后者永远不会返回true。您所需要做的就是比较$b和$a.name。请像这样改变你的代码。
$b = "win10-jde"
$a = Get-SCVirtualMachine | Select-Object name, vmhost
foreach($vm in $a)
{
if ($b -eq $vm.name)
{
Write-Output "$vm"
}
}https://stackoverflow.com/questions/47800715
复制相似问题