天天看點

PowerShell實作批量收集SCVMM中虛拟機IP-續

因為本人技術提升了,是以這個腳本又改進了,得益于同僚給我悉心教導c#文法,這個腳本更好用了。廢話不多說,直接上代碼。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>#powerd by 九叔</code>

<code>#批量從VMM和Hyper-V中擷取IP位址,友善比對。更準确。</code>

<code>#轉載必須注明出處,可以以此做改進。</code>

<code>param</code><code>(</code>

<code>  </code><code>[String]</code><code>$vmmServer</code> <code>= </code><code>"sc-vmmsp1"</code>

<code> </code><code>)</code>

<code>Import-Module</code> <code>virtualmachinemanager</code>

<code>Get-SCVMMServer</code> <code>-ComputerName </code><code>$vmmServer</code> <code>-SetAsDefault  | </code><code>Out-Null</code>

<code>$VMs</code> <code>= </code><code>Get-vm</code> <code>-All</code>

<code>foreach</code><code>( </code><code>$VM</code> <code>in</code> <code>$VMs</code> <code>)</code>

<code>{</code>

<code>    </code><code>$info_name</code> <code>= </code><code>$vm</code><code>.Name</code>

<code>    </code><code>$allVMS</code> <code>= </code><code>Get-SCIPAddress</code> 

<code>    </code><code>foreach</code><code>(</code><code>$item</code> <code>in</code> <code>$allVMS</code><code>)</code>

<code>    </code><code>{</code>

<code>          </code><code>if</code><code>(</code><code>$VM</code><code>.Name </code><code>-eq</code> <code>$item</code><code>.Description </code><code>-and</code> <code>(</code><code>$vm</code><code>.IsPrimaryVM </code><code>-eq</code> <code>"false"</code><code>) )</code>

<code>       </code><code>{        </code>

<code>       </code><code>Write-Host</code> <code>"============================="</code>  <code>-foregroundcolor </code><code>'Red'</code>

<code>                </code><code>Write-Host</code> <code>1名字: </code><code>$info_name</code><code>;</code>

<code>        </code><code>Write-Host</code> <code>2所在實體主機: (</code><code>$vm</code><code>.vmhost.FQDN)</code>

<code>         </code><code>$vvmmhhss</code> <code>= </code><code>$vm</code><code>.vmhost.ComputerName</code>

<code>         </code><code>$nb</code> <code>= </code><code>"invoke-command -computername $vvmmhhss -command{(Get-VMNetworkAdapter -VMName '$info_name').ipaddresses}"</code>

<code>         </code><code>Write-Host</code> <code>3從VMM中擷取的IP   </code><code>$item</code><code>.Address;</code>

<code>       </code><code>Write-Host</code> <code>4從Hyper-V中擷取的IP </code>

<code>        </code><code>powershell </code><code>$nb</code>  

<code>       </code> 

<code>       </code><code>}</code>

<code>    </code><code>}}</code>

具體效果如下

<a href="http://s3.51cto.com/wyfs02/M00/6E/07/wKiom1VxS2vC_qLFAAJKUG4aX2c793.jpg" target="_blank"></a>

那麼這裡我其實發現了一個更有趣的地方,上面的例子也用到了

<code>echo 如果有兩個變量相加,那麼它實際上預設是寫在兩行的。</code>

<code>Write-Host</code> <code>但是不要用别名echo,用wr這句,多個變量是可以在一行顯示的。</code>

<code>另外,在wr的後面加 -nonewline 可以不換行</code>

<code>加 -foregroundcolor </code><code>'Blue'</code> <code>可以變顔色</code>

<code></code>

本文轉自 九叔 51CTO部落格,原文連結:http://blog.51cto.com/jiushu/1658890,如需轉載請自行聯系原作者

繼續閱讀