博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell获取特定“描述”的虚拟机IP地址
阅读量:6595 次
发布时间:2019-06-24

本文共 1003 字,大约阅读时间需要 3 分钟。

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

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

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

废话不多说,直接上脚本

1
2
3
4
5
6
7
8
9
10
11
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语句可以用更简单的语句来实现

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

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

本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1662030,如需转载请自行联系原作者

你可能感兴趣的文章
EventCache表太大, 怎么办?
查看>>
Top 10 mistakes in Eclipse Plug-in Development
查看>>
Directx教程(23) 简单的光照模型(2)
查看>>
Java 并发性和多线程
查看>>
IE6下frameset横向滚动条BUG
查看>>
Python线程专题9:线程终止与挂起、实用工具函数
查看>>
Unity中关于作用力方式ForceMode的功能注解
查看>>
view生命周期的一个找父类的控件的方法
查看>>
物理读之LRU(最近最少被使用)的深入解析
查看>>
Python2.7升级到3.0 HTMLTestrunner报错解决方法
查看>>
建立Git版本库管理框架例子
查看>>
nginx防止部分DDOS攻击
查看>>
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字......
查看>>
number_format() 函数定义和用法
查看>>
Java8中聚合操作collect、reduce方法详解
查看>>
查看记录
查看>>
mybatis报ORA-00911: 无效字符
查看>>
我的友情链接
查看>>
Linux运维学习笔记之二:常用命令1
查看>>
snort安装常见问题及解决方法
查看>>