天天看点

PowerShell实现批量收集SCVMM中虚拟机IP

首先,这个脚本有个功能限制:只能针对已安装代理的Windows虚拟机。

1

2

3

4

5

6

7

8

9

10

<code>Invoke-Command</code> <code>-ComputerName hahv1,hahv2,hahv3 -Command{</code><code>Get-VMNetworkAdapter</code> <code>-all </code><code>|Select</code><code>-Object VMname,IPAddresses | </code><code>Format-Table</code> <code>&gt; d:</code><code>$env:COMPUTERNAME</code><code>.csv} </code><code>#导出IP地址</code>

<code>#这下面三个copy是啥意思呢?拷贝不同主机上的文件到运行脚本的D盘</code>

<code>copy \hahv1d</code><code>$hahv1</code><code>.csv d:</code>

<code>copy \hahv2d</code><code>$hahv2</code><code>.csv d:</code>

<code>copy \hahv3d</code><code>$hahv3</code><code>.csv d:</code>

<code>#PowerShell中运行cmd命令不太方便,因为cmd命令有一些和PowerShell差不多,但是功能不一样,所以用ech写入一条命令,就是将本地的csv文件组合一下,附加到一个叫做cp.cmd的文件中</code>

<code>echo “copy *.csv hv.csv /y” &gt;d:/cp.cmd</code>

<code>d:</code>

<code>#运行这个拷贝,结束</code>

<code>.cp.cmd</code>

↑以上脚本别用了。

来看看新的写法怎么写。脚本需要在SCVMM的PowerShell中使用,如果是静默运行,记得要先加载模块

<code>echo ----本脚本展示当前SCVMM中所有Hyper-V主机的虚拟机IP地址与计算机名称的对应关系</code>

<code>echo ----IP地址来源于Hyper-V主机,所以现阶段只能针对已安装代理的Windows虚拟机。</code>

<code>echo ----可以配合邮件发送功能,定时发送</code>

<code>echo </code><code>"----Powerd By 九叔"</code>

<code>$cc</code> <code>= </code><code>Get-VMHost</code><code>|select</code> <code>computername</code>

<code>$cc</code><code>|foreach</code> <code>{echo 当前列表的虚拟机的宿主机为:(</code><code>$_</code><code>.computername)</code>

<code>Invoke-Command</code> <code>-ComputerName </code><code>$_</code><code>.computername  -Command{</code><code>Get-VMNetworkAdapter</code> <code>-all | </code><code>Select-Object</code> <code>VMname,IPAddresses</code><code>|ft</code><code>}}</code>

以上代码7行,4行都是说明,所以你这次代码效率真的是提高了。不过因为这说白了是到目标计算机上执行的,所以运行效率和以前一样,最后我们看看效果

【关机的看不了,Linux的看不了,没装agent的看不了】

<a href="http://s3.51cto.com/wyfs02/M00/6D/15/wKiom1Vb5orhJ0_gAAPv9VRFbss726.jpg" target="_blank"></a>

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

继续阅读