Schrieb ein kleines Skript, um die Nummer Multipaths von den Windows-Servern mit WMI-Abfrage zu finden. Es funktioniert gut für die Server, die direkt ohne irgendein Problem verbinden können. Aber wenn ein Server pingbar ist, aber nicht über das WMI-Skript erreichen kann, dauert es lange, bis der Fehler zurückgegeben wird (zB wenn ein Linux-Server-Hostname in der servers.txt-Liste vorhanden ist). Kann mir jemand helfen, das Gleiche zu tun auf eine schnellere Weise ..?Gibt es eine schnellere Methode, WMI-Abfrage von Powershell durchzuführen ..?
$Servers = Get-Content .\Servers.txt
$ErrorActionPreference = ‘SilentlyContinue’
FOREACH ($Server in $Servers) {
Write-Host $Server -nonewline
if (test-connection -computername $Server -Count 1 -quiet) {
$Name = $null
$NoPath =$null
$MPIODisks =$null
$MPIODisks = Get-WmiObject -Namespace root\wmi -Class mpio_disk_info -ComputerName "$Server" |Select-Object "DriveInfo"
if ($MPIODisks -eq $Null) {
write-host "`t - Unable to connect" -fore "RED"
} else {
write-host ""
write-host "Drive Name `tNo.Path" -fore "yellow"
Foreach ($Disk in $MPIODisks) {
$mpiodrives = $disk.DriveInfo
foreach ($Drive in $mpiodrives) {
$Name = $Drive.Name
$NoPath = $Drive.Numberpaths
If ($NoPath -lt 4) {
Write-Host $Name `t -nonewline
write-host $NoPath -fore "Red"
} else {
Write-Host $Name `t -nonewline
write-host $NoPath -fore "Green"
}
}
}
}
write-host ""
} else {
write-host "`t- Unknown Host" -fore "Red"
write-host ""
}
}
Welche Version von Powershell verwenden, die auf dem Client und Server? –
In neueren Versionen können Sie 'Get-CimInstance -OperationTimeoutSec' verwenden –