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