天天看点

<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,如需转载请自行联系原作者

继续阅读