我们可以通过提供的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> </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,如需转载请自行联系原作者