コードの背後にあるロジックを理解して正しく動作させるのに苦労しています。リモート システムからソフトウェア バージョンを取得し、出力を[PSCustomObject]
.
[System.Collections.ArrayList]$NetBIOSNames = @('ComputerOne','ComputerTwo')
[System.Collections.ArrayList]$softwareNames = @("ActivClient","Adobe Acrobat", "ATHOC", "DSET", "Firefox", "Google Chrome", "Java", "McAfee Agent")
[System.Collections.ArrayList]$VersionNumber = @()
[System.Collections.ArrayList]$CorrectVersion = @('7.2.1','21.001.20138','6.2.27.271','1.6.8','78.8.0','89.0.4389.72','8.0.2710.9','5.7.1.116')
foreach($Computer in $NetBIOSNames){
foreach ($software in $softwareNames) {
$Version = Invoke-Command -ComputerName $Computer -ScriptBlock {
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object {$_.displayname -like "*$Using:software*" }
}
$null = $VersionNumber.Add($($Version.DisplayVersion))
}
For($i=0; $i -lt $softwareNames.Count; $i++){
[PSCustomObject]@{
"Computer Name" = $NetBIOSNames[$i]
"Software Name" = $softwareNames[$i]
"Current Version" = $VersionNumber[$i]
"Correct Version" = $CorrectVersion[$i]
}
}
}
したがって、単一のコンピューターに対して実行すると、目的の出力である次のものが返されます。
Computer Name Software Name Current Version Correct Version
------------- ------------- --------------- ---------------
ComputerOne ActivClient 7.2.1 7.2.1
Adobe Acrobat 21.001.20138 21.001.20138
ATHOC 6.2.27.271 6.2.27.271
DSET 1.6.8 1.6.8
Firefox 78.8.0 78.8.0
Google Chrome 89.0.4389.72 89.0.4389.72
Java {8.0.2710.9, 8.0.2710.9} 8.0.2710.9
McAfee Agent {5.7.1.116, 5.7.1.116} 5.7.1.116
….しかし、複数に対して実行すると、次のように返されます。
Computer Name Software Name Current Version Correct Version
------------- ------------- --------------- ---------------
ComputerOne ActivClient 7.2.1 7.2.1
ComputerTwo Adobe Acrobat 21.001.20138 21.001.20138
ATHOC 6.2.27.271 6.2.27.271
DSET 1.6.8 1.6.8
Firefox 78.8.0 78.8.0
Google Chrome 89.0.4389.72 89.0.4389.72
Java {8.0.2710.9, 8.0.2710.9} 8.0.2710.9
McAfee Agent {5.7.1.116, 5.7.1.116} 5.7.1.116
ComputerOne ActivClient 7.2.1 7.2.1
ComputerTwo Adobe Acrobat 21.001.20138 21.001.20138
ATHOC 6.2.27.271 6.2.27.271
DSET 1.6.8 1.6.8
Firefox 78.8.0 78.8.0
Google Chrome 89.0.4389.72 89.0.4389.72
Java {8.0.2710.9, 8.0.2710.9} 8.0.2710.9
McAfee Agent {5.7.1.116, 5.7.1.116} 5.7.1.116
返品したいのは以下です。
Computer Name Software Name Current Version Correct Version
------------- ------------- --------------- ---------------
ComputerOne ActivClient 7.2.1 7.2.1
Adobe Acrobat 21.001.20138 21.001.20138
ATHOC 6.2.27.271 6.2.27.271
DSET 1.6.8 1.6.8
Firefox 78.8.0 78.8.0
Google Chrome 89.0.4389.72 89.0.4389.72
Java {8.0.2710.9, 8.0.2710.9} 8.0.2710.9
McAfee Agent {5.7.1.116, 5.7.1.116} 5.7.1.116
ComputerTwo ActivClient 7.2.1 7.2.1
Adobe Acrobat 21.001.20138 21.001.20138
ATHOC 6.2.27.271 6.2.27.271
DSET 1.6.8 1.6.8
Firefox 78.8.0 78.8.0
Google Chrome 89.0.4389.72 89.0.4389.72
Java {8.0.2710.9, 8.0.2710.9} 8.0.2710.9
McAfee Agent {5.7.1.116, 5.7.1.116} 5.7.1.116
これが長い投稿であることを許してください。私が正しくしていないことに固執しているだけです。私はそれが私[PSCustomObject]
が列挙している方法だと思いましたが、どうやってそれを行うかについてはよくわかりません. これを行う方法について、アイデアやより良い提案をした人はいますか?