PowerShell获取特定“描述”的虚拟机IP地址

本文介绍了一种利用PowerShell脚本批量获取虚拟机IP地址的方法。通过组合使用Get-SCIPAddress与Get-VM命令,并借助循环结构,实现了依据特定描述筛选虚拟机的功能。

首先我们来说说需求:某个用户创建了一些虚拟机,我们通过Get-SCIPAddress是可以得到特定名称的虚拟机,但是,如果我们希望从某个描述来批量获得虚拟机的IP,这个时候通过“管道”和“直接的命令”是无法获取的。

这个时候,就需要用到循环。

比如下面这个例子,虚拟机的get-vm所获得的描述部分,最下面这些“xxxx新机器到位后要求16G这些字符”,而使用Get-SCIPAddress的描述部分则是get-vm的名称部分。所以我们这里需要用到一个相同的属性,那就是get-vm的名称部分,和Get-SCIPAddress的描述部分。通过两个命令连查,得到结果。


wKioL1V-eMSx95GjAAM5RkfMuEQ532.jpg


废话不多说,直接上脚本

Import-Module virtualmachinemanager
$vvm =Get-SCIPAddress |where {$_.Description -like "边塞之城*"}|select name,Description
$vcb = get-vm|where {$_.Description -like "*李寻欢*"}|select Name
foreach ( $cb in $vvm)
{   
    foreach ($ccb in $vcb)
    {
    if ($cb.description -eq $ccb.name)
        {echo $cb }
     }
      }

实际上面的脚本做的工作稍显复杂,它首先使用Get-SCIPAddress where选择了一下,描述部分有类似边塞之城的属性,接下来在get-vm的描述部分,搜索一下具有名称李寻欢的部分


接下来进入一个循环,查找两个命令中描述和名称相同的部分,然后打印出来。通过两个嵌套循环实现。


事实上,以上的foreach语句可以用更简单的语句来实现


 foreach ($cb in $vvm)
 { if ($_.cb.description -eq $_.ccb.name)
        {echo $cb }}

这里其实就是通过了$_.函数的方法缩减了输入的字符,两种方法前面的更便于阅读,第二种在熟练的前提下,也更简洁。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值