我有以下PowerShell脚本,它允许我收集有关磁盘和信息的信息。启动脚本的域的Windows服务器上的卷:
$ErrorActionPreference = 'SilentlyContinue'
Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' -Properties * |
Select-Object Name |
ForEach-Object {
if (Test-Connection $_.Name -Count 1) {
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $_.Name -Filter "DriveType=3" |
Select-Object PSComputerName, DeviceID,
@{Name="Size /GB";Expression={[math]::Round($($_.Size / 1GB), 2)}},
@{Name="Free /GB";Expression={[math]::Round($($_.Freespace / 1GB), 2)}},
@{Name="Free %";Expression={[math]::Round($($_.Freespace/$_.Size)*100, 1)}}
} else {
Write-Nost $_.Name " Connection Error"
}
} |
sort PSComputerName |
Format-Table -AutoSize
我得到以下结果:
SRV01 Connection Error SRV02 Connection Error PSComputerName DeviceID Size /GB Free /GB Free % -------------- -------- ------------ --------- ------- SERVER03 C: 125,51 105,59 84,1 SERVER04 C: 24,83 7,38 29,7 SERVER05 E: 14,65 7,36 50,2 SERVER06 C: 49,66 29,28 59
我想为每个服务器添加一个带操作系统的附加列。
我希望这个专栏位于" PSComputerName"之后的第二个位置。柱。我怎样才能得到这个结果?
我想通过在Get-WmiObject Win32_OperatingSystem | Select-Object caption
中添加Get-WmiObject -Class Win32_LogicalDisk ...
来使用嵌套命令,但我不知道要使用哪种语法以及如何在另一个命令中叠加命令。
答案 0 :(得分:0)
不要使用-properties * ...它将检索此脚本中不需要的每个填充属性。
Get-ADComputer
有一个operatingsystem
属性。
未经测试:
Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' -Properties OperatingSystem | ForEach-Object {
$OS = $_.OperatingSystem
If (Test-Connection $_.Name -Count 1 -Quiet){
Get-WmiObject -Class win32_logicalDisk -ComputerName $_.Name -Filter "DriveType=3" |
Select-Object pscomputername, @{Name="OS";Expression={$OS}} ,DeviceID,
@{Name="Size /GB";Expression={[math]::Round($($_.size / 1GB), 2)}},
@{Name="Free /GB";Expression={[math]::Round($($_.freespace / 1GB), 2)}},
@{Name="Free %";Expression={[math]::Round($($_.Freespace/$_.Size)*100, 1)}}
}
else {
Write-host $_.Name " Connection Error"
}
} | sort pscomputername | Format-Table -AutoSize