あなたは非常に無邪気な初心者タイプのミスをしましたが、それはかなり簡単に解決されています。
まず、ft
から始めましょう。 ft
はFormat-Table
の略です。一般に、何かを出力しようとしているときは、Format-
コマンドを使用するだけです。あなたはその結果を使用しようとしており、出力していないので、ft
を削除する必要があります。代わりに、Select-Object
コマンドレットを使用します(または、より一般的にはselect
が使用されます)。
get-content -Path C:\Support\assets.txt | ForEach-Object ({get-wmiobject win32_product -ComputerName $_ | where-Object {$_.name -eq "google chrome"} |Select version})
これで、Version
プロパティを持つオブジェクトの配列が得られます。あなたが関連しているコンピュータが何であるかを知りたかったら、特に便利です。それは一般的には良いレッスンですが、ここではあまり実用的ではありません。実際に物事をより良くすることに移りましょう!
このようなループのように物事を配管することによって、物事を困難にしています。各IPアドレスに対して個別にGet-WMIObject
コールを発信しています。 get-help get-wmiobject -parameter computername
を見ると、文字列の配列を受け入れることがわかります。そのため、複数のターゲットに対して1回の呼び出しを行うことができます。少しあなたの結果をスピードアップする必要がありますが、全体の多くより速いものを作るだろう何
$IPList = get-content -Path C:\Support\assets.txt
Get-WMIObject win32_product -ComputerName $IPList | Where{$_.Name -eq 'Google Chrome'}
ではなくWhere
のGet-WMIObject
の-Filter
パラメータを使用することです。その理由は、プロバイダーが独自のオブジェクトをフィルタリングすることで効率的であり、必要なものだけを返すことです。これは、PowerShellがフィルタリングするものよりも優れているからです。また、これはリモートマシンから返されるデータを減らすので、マシンごとに何百もの結果が得られるのではなく、必要なデータだけを取得してから、必要なデータだけを解析するだけです。基本的には、自分の問題ではなく、すべてのコンピュータのプロセッサが問題に取り組んでいます。それでは、-Filter
パラメータを使用してみましょう:
$IPList = get-content -Path C:\Support\assets.txt
Get-WMIObject win32_product -ComputerName $IPList -Filter "Name='Google Chrome'"
[OK]を、物事が速くなりました全体の多くを戻ってくる必要があります。最後の項目まで、それぞれのバージョンが見つかったコンピュータ名が必要です。良いニュース、あなたはすでにそれを持っています!実際には、指定したIPアドレスではなく、実際のコンピュータ名があります。デフォルトでは表示されませんが、これらの結果のそれぞれには、参照可能なプロパティPSComputerName
があります。私たちは、Select
単にパイプすることができますし、我々が望むのプロパティを指定:
$IPList = get-content -Path C:\Support\assets.txt
Get-WMIObject win32_product -ComputerName $IPList -Filter "Name='Google Chrome'" | Select PSComputerName,Version
おそらくあなたがして満足している結果を得るために起こっています。そうでない場合は、同じようにForEach
ループを実行して、指定したようにフォーマットすることができます。
$IPList = get-content -Path C:\Support\assets.txt
ForEach($IP in $IPList){
$Version = Get-WMIObject win32_product -ComputerName $IP -Filter "Name='Google Chrome'" | Select -Expand Version
"$IP - $Version"
}
私が必要とするすべてです!私はそんなに詳細を期待していませんでした。あなたは私に本当の教訓を与えました。どうもありがとうございました。お大事に! –