複数のリモート コンピューターからプロセス情報を取得するスクリプトがあります。情報を取得しようとする前に、コンピューターが到達可能かどうかを確認します。そうでない場合は、リテラルを結果に挿入したいと思います。これが私のスクリプトです:
$Pass = ConvertTo-SecureString -string "SECRET" -AsPlainText –Force
$User = "User"
$Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $Pass
$ProcessNames = @('App1.exe', 'App2.exe')
$HostList =@('Computer1','Computer2', 'Computer3')
foreach ($CurrHost in $HostList)
{
# check if it's alive
if((Test-Connection -Cn $CurrHost -BufferSize 16 -Count 1 -ea 0 -quiet))
{
gwmi win32_process -computername $CurrHost -Credential $Cred |
Where-Object {$ProcessNames -contains $_.Name } |
Select-Object CSName, Name, WorkingSetSize, VirtualSize #|
#Format-Table -AutoSize
}
Else
{
# This will be replaced with a foreach $App
Select-Object $CurrHost, "App1.exe", "-1", "-1"
Select-Object $CurrHost, "App2.exe", "-1", "-1"
}
}
else 句は、私が望むものを表示しようとするために入れたものです。
Computer2 がオフラインの場合、結果は次のようになります。
CSName Name WorkingSetSize VirtualSize
------ ---- -------------- -----------
Computer1 App1.exe 6516736 82006016
Computer1 App2.exe 156880896 338481152
Computer2 App1.exe -1 -1
Computer2 App2.exe -1 -1
Computer3 App1.exe 9981952 78761984
Computer3 App2.exe 219643904 357588992
前もって感謝します
マーク