本文共 2584 字,大约阅读时间需要 8 分钟。
我们可以通过提供的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 | Function Get-DiskInfo { Param ( $ComputerName = $env:COMPUTERNAME , [Switch] $PassThru ) Function Get-ColorSplat { # Create color Splats $C1 = @{ForegroundColor= "Green" ;BackgroundColor= "DarkGreen" } $C2 = @{ForegroundColor= "Yellow" ;BackgroundColor= "DarkYellow" } $C3 = @{ForegroundColor= "White" ;BackgroundColor= "DarkRed" } $C4 = @{ForegroundColor= "Blue" ;BackgroundColor= "Gray" } # Create color constants in the previous scope. New-Variable -Name "Good" -Value $C1 -Scope 1 New-Variable -Name "Problem" -Value $C2 -Scope 1 New-Variable -Name "Bad" -Value $C3 -Scope 1 New-Variable -Name "Header" -Value $C4 -Scope 1 } # End: Get-ColorSplat Function Write-ColorOutput { Param ( $DiskInfo ) # Display the headers. Write-host "DiskInfo | FreeSpaceGB | PercentFreeSpace" # Display the data. ForEach ( $D in $DiskInfo ) { $DeviceID = $D .DeviceID.PadRight(6) $FSGB = $D .FreeSpaceGB.ToString().PadRight(6).Remove(5) $PFS = $D .PercentFS.ToString().PadRight(6).Remove(5) If ( $D .PercentFS -ge 80) { Write-Host "$($DeviceID) | $($FSGB) | $($PFS)" @Good } ElseIf (( $D .PercentFS -lt 80) -and ( $D .PercentFS -GE 60)) { Write-Host "$($DeviceID) | $($FSGB) | $($PFS)" @Problem } Else { Write-Host "$($DeviceID) | $($FSGB) | $($PFS)" @Bad } } } # Get the color splats Get-ColorSplat $DiskInfo = Get-WmiObject Win32_LogicalDisk -ComputerName $ComputerName | Select-Object -Property DeviceID, @{Name= "FreeSpaceGB" ;Expression={ $_ .Freespace/1GB}}, @{Name= "PercentFS" ;Expression={( $_ .FreeSpace/ $_ .Size)*100}} If (! $PassThru ) { Write-ColorOutput -DiskInfo $DiskInfo } Else { Write-Output $DiskInfo } } |
在这个示例中,我们看到默认的输出不同颜色的信息绘制技术员到硬盘,需要注意
在这个示例中,使用passthru参数和我们再次处理的对象。记得代码和显示信息,是相关的和适合他们的技能水平。
1 2 3 4 5 6 7 8 | PS> Get-DiskInfo -ComputerName CantgisPC2 -PassThru | Format-Table -AutoSize DeviceID FreeSpaceGB PercentFS -------- ----------- --------- C: 34.6056213378906 31.7261065852248 D: 202.438598632813 84.9355612944946 E: 79.9115943908691 33.5278754613268 Z: 83.1089553833008 8.95466512825099 |
这几种方法将允许PowerShell的工作人员把重点放在什么需要他们的注意的地方,从而忽略那些不过滤cmdlet的输出。
本文转自cantgis 51CTO博客,原文链接:http://blog.51cto.com/cantgis/1302108,如需转载请自行联系原作者