首先,这个脚本有个功能限制:只能针对已安装代理的Windows虚拟机。
先看看以前只会写CMD阶段做的脚本吧。http://jiushu.blog.51cto.com/972756/1419862 这个阶段写的脚本思路都充满了人文关怀
1
2
3
4
5
6
7
8
9
10
|
Invoke-Command
-ComputerName hahv1,hahv2,hahv3 -Command{
Get-VMNetworkAdapter
-all
|Select
-Object VMname,IPAddresses |
Format-Table
> d:
$env:COMPUTERNAME
.csv}
#导出IP地址
#这下面三个copy是啥意思呢?拷贝不同主机上的文件到运行脚本的D盘
copy \hahv1d
$hahv1
.csv d:
copy \hahv2d
$hahv2
.csv d:
copy \hahv3d
$hahv3
.csv d:
#PowerShell中运行cmd命令不太方便,因为cmd命令有一些和PowerShell差不多,但是功能不一样,所以用ech写入一条命令,就是将本地的csv文件组合一下,附加到一个叫做cp.cmd的文件中
echo “copy *.csv hv.csv /y” >d:/cp.cmd
d:
#运行这个拷贝,结束
.cp.cmd
|
↑以上脚本别用了。
来看看新的写法怎么写。脚本需要在SCVMM的PowerShell中使用,如果是静默运行,记得要先加载模块
1
2
3
4
5
6
7
|
echo ----本脚本展示当前SCVMM中所有Hyper-V主机的虚拟机IP地址与计算机名称的对应关系
echo ----IP地址来源于Hyper-V主机,所以现阶段只能针对已安装代理的Windows虚拟机。
echo ----可以配合邮件发送功能,定时发送
echo
"----Powerd By 九叔"
$cc
=
Get-VMHost
|select
computername
$cc
|foreach
{echo 当前列表的虚拟机的宿主机为:(
$_
.computername)
Invoke-Command
-ComputerName
$_
.computername -Command{
Get-VMNetworkAdapter
-all |
Select-Object
VMname,IPAddresses
|ft
}}
|
以上代码7行,4行都是说明,所以你这次代码效率真的是提高了。不过因为这说白了是到目标计算机上执行的,所以运行效率和以前一样,最后我们看看效果
【关机的看不了,Linux的看不了,没装agent的看不了】
本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1653026,如需转载请自行联系原作者