天天看點

<Power Shell>21 如何從遠端用戶端快速提取資訊

我們可以通過提供的cmdlet來幫助快速提取資訊從遠端用戶端。

然後,我們可以擁有的PowerShell的标志值将被視為一個可接受的範圍内。

下面的代碼是一個小例子,我将展示給大家如何提取用戶端的硬碟可用空間。

這個簡單的例子将展示使用顔色标記潛在的問題。

這有一個開關參數cmdlet - passthru。

因為這個代碼是用于不是特别喜歡PowerShell使用者,預設的行為是顯示彩色資訊。

使用passthru參數抑制使用寫主機和允許對象被傳遞到管道。

在這種情況下,我們有對象。通過這樣做,我們有能力繼續通過我們的對象進入管道。下面是一些例子:

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

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<code>Function</code> <code>Get-DiskInfo</code>

<code>{</code>

<code>    </code><code>Param</code><code>(</code>

<code>        </code><code>$ComputerName</code> <code>= </code><code>$env:COMPUTERNAME</code><code>,</code>

<code>        </code><code>[Switch]</code><code>$PassThru</code>

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

<code>                                                                                                                                                   </code> 

<code>    </code><code>Function</code> <code>Get-ColorSplat</code>

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

<code>        </code><code># Create color Splats</code>

<code>        </code><code>$C1</code> <code>= @{ForegroundColor=</code><code>"Green"</code><code>;BackgroundColor=</code><code>"DarkGreen"</code><code>}</code>

<code>        </code><code>$C2</code> <code>= @{ForegroundColor=</code><code>"Yellow"</code><code>;BackgroundColor=</code><code>"DarkYellow"</code><code>}</code>

<code>        </code><code>$C3</code> <code>= @{ForegroundColor=</code><code>"White"</code><code>;BackgroundColor=</code><code>"DarkRed"</code><code>}</code>

<code>        </code><code>$C4</code> <code>= @{ForegroundColor=</code><code>"Blue"</code><code>;BackgroundColor=</code><code>"Gray"</code><code>}</code>

<code>        </code><code># Create color constants in the previous scope.</code>

<code>        </code><code>New-Variable</code> <code>-Name</code> <code>"Good"</code> <code>-Value</code> <code>$C1</code> <code>-Scope</code> <code>1</code>

<code>        </code><code>New-Variable</code> <code>-Name</code> <code>"Problem"</code> <code>-Value</code> <code>$C2</code> <code>-Scope</code> <code>1</code>

<code>        </code><code>New-Variable</code> <code>-Name</code> <code>"Bad"</code> <code>-Value</code> <code>$C3</code> <code>-Scope</code> <code>1</code>

<code>        </code><code>New-Variable</code> <code>-Name</code> <code>"Header"</code> <code>-Value</code> <code>$C4</code> <code>-Scope</code> <code>1</code>

<code>    </code><code>} </code><code># End: Get-ColorSplat</code>

<code>    </code><code>Function</code> <code>Write-ColorOutput</code>

<code>        </code><code>Param</code><code>(</code><code>$DiskInfo</code><code>)</code>

<code>        </code><code># Display the headers.</code>

<code>        </code><code>Write-host</code> <code>"DiskInfo | FreeSpaceGB | PercentFreeSpace"</code>

<code>        </code><code># Display the data.</code>

<code>        </code><code>ForEach</code> <code>(</code><code>$D</code> <code>in</code> <code>$DiskInfo</code><code>)</code>

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

<code>            </code><code>$DeviceID</code> <code>= </code><code>$D</code><code>.DeviceID.PadRight(6)</code>

<code>            </code><code>$FSGB</code> <code>= </code><code>$D</code><code>.FreeSpaceGB.ToString().PadRight(6).Remove(5)</code>

<code>            </code><code>$PFS</code> <code>= </code><code>$D</code><code>.PercentFS.ToString().PadRight(6).Remove(5)</code>

<code>            </code><code>If</code> <code>(</code><code>$D</code><code>.PercentFS </code><code>-ge</code> <code>80)</code>

<code>            </code><code>{ </code><code>Write-Host</code> <code>"$($DeviceID)   | $($FSGB)       | $($PFS)"</code> <code>@Good</code> <code>}</code>

<code>            </code><code>ElseIf</code> <code>((</code><code>$D</code><code>.PercentFS </code><code>-lt</code> <code>80) </code><code>-and</code> <code>(</code><code>$D</code><code>.PercentFS </code><code>-GE</code> <code>60))</code>

<code>            </code><code>{ </code><code>Write-Host</code> <code>"$($DeviceID)   | $($FSGB)       | $($PFS)"</code> <code>@Problem</code> <code>}</code>

<code>            </code><code>Else</code>

<code>            </code><code>{ </code><code>Write-Host</code> <code>"$($DeviceID)   | $($FSGB)       | $($PFS)"</code> <code>@Bad</code> <code>}</code>

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

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

<code>    </code><code># Get the color splats</code>

<code>    </code><code>Get-ColorSplat</code>

<code>    </code><code>$DiskInfo</code> <code>= </code><code>Get-WmiObject</code> <code>Win32_LogicalDisk</code> <code>-ComputerName</code> <code>$ComputerName</code> <code>|</code>

<code>     </code><code>Select-Object</code> <code>-Property</code> <code>DeviceID,</code>

<code>     </code><code>@{Name=</code><code>"FreeSpaceGB"</code><code>;Expression={</code><code>$_</code><code>.Freespace/1GB}},</code>

<code>     </code><code>@{Name=</code><code>"PercentFS"</code><code>;Expression={(</code><code>$_</code><code>.FreeSpace/</code><code>$_</code><code>.Size)*100}}</code>

<code>     </code><code>If</code> <code>(!</code><code>$PassThru</code><code>) {</code><code>Write-ColorOutput</code> <code>-DiskInfo</code> <code>$DiskInfo</code><code>}</code>

<code>     </code><code>Else</code> <code>{</code><code>Write-Output</code> <code>$DiskInfo</code><code>}</code>

<code>}</code>

在這個示例中,我們看到預設的輸出不同顔色的資訊繪制技術員到硬碟,需要注意

<a href="http://blog.51cto.com/attachment/201309/150718281.png" target="_blank"></a>

在這個示例中,使用passthru參數和我們再次處理的對象。記得代碼和顯示資訊,是相關的和适合他們的技能水準。

<code>PS&gt; </code><code>Get-DiskInfo</code> <code>-ComputerName</code> <code>CantgisPC2</code> <code>-PassThru</code> <code>| </code><code>Format-Table</code> <code>-AutoSize</code>

<code>                                                     </code> 

<code>DeviceID      FreeSpaceGB        PercentFS</code>

<code>--------      -----------        ---------</code>

<code>C:       34.6056213378906 31.7261065852248</code>

<code>D:       202.438598632813 84.9355612944946</code>

<code>E:       79.9115943908691 33.5278754613268</code>

<code>Z:       83.1089553833008 8.95466512825099</code>

這幾種方法将允許PowerShell的從業人員把重點放在什麼需要他們的注意的地方,進而忽略那些不過濾cmdlet的輸出。

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

繼續閱讀