天天看點

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,如需轉載請自行聯系原作者

繼續閱讀