首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果powershell中没有执行条件

如果powershell中没有执行条件
EN

Stack Overflow用户
提问于 2017-12-13 19:24:05
回答 2查看 55关注 0票数 0

我从scvmm中获取VM的数据,如名称和VMhost,并存储到变量$a中

我有VM名称ex: win10-jde,我想通过使用if语句获得win10-jde名称和vmhost的详细信息,它失败了任何帮助。

代码语言:javascript
复制
$b = "win10-jde"
$a = Get-SCVirtualMachine | Select-Object name, vmhost

if ($b -match $a){
    Write-Output "$b"
}

$a输出是:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-13 19:39:42

您需要通过foreach循环运行包含VM详细信息的对象。而且,我将使用-eq而不是-match,因为-match用于匹配正则表达式。下面有更多..。试着做这样的事情:

代码语言:javascript
复制
$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要求一个变量与它要比较的变量相同,以便使比较成为真。

我希望这能帮到你!

票数 0
EN

Stack Overflow用户

发布于 2017-12-14 03:59:50

在这里,您尝试将字符串$b与对象$a进行比较,后者永远不会返回true。您所需要做的就是比较$b$a.name。请像这样改变你的代码。

代码语言:javascript
复制
$b = "win10-jde"
$a = Get-SCVirtualMachine | Select-Object name, vmhost
foreach($vm in $a)
{    
    if ($b -eq $vm.name)
    {
        Write-Output "$vm"
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47800715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档