2017-01-13 4 views
0

私たちのシステムで実行されているサービスのバージョンを確認する必要があります。だから私は近づいているが、それを理解できないようだ。私はGet-WmiObjectプロセスを使用して、実行中のサービスのプロセスを探しています。次に、 "the"サービスである実行可能ファイルのパスを取り戻します。次いで、前記実行可能ファイルのFileVersionを検索する。Get-WMIobjectプロセスを使用してサービスのパスを特定し、バージョン情報を取得する

foreach ($Computer in $Computers) { 
    $zabbix = Get-WmiObject -Class Win32_Process -ComputerName $computer -Filter "name like '%zabbix%'" | 
       Select -ExpandProperty Path | 
       Get-ItemProperty | 
       Select-Object -Property VersionInfo | 
       ? {$_.ProductVersion} 
} 
Write-Host "$zabbix - $Computer" 

答えて

2

あなたはフィルタリングされていないため、?/Where-Objectをドロップします。

ForEach ($Computer in $Computers){ 
    $zabbix = Invoke-Command -ComputerName $Computer -ScriptBlock { 
     (Get-WmiObject -Class Win32_Process -Filter "name like '%zabbix%'" | 
     Select -ExpandProperty Path | Get-ItemProperty).VersionInfo.ProductVersion 
    } 
    Write-Host "$zabbix - $Computer" 
} 
+0

このような機能はありますが、リモートシステムではなくローカルホストのパスを引き出しているようです。これをテストするために、私は$コンピュータ変数を設定し、(Get-WmiObjectを実行して.ProductVersionを実行していましたが、エラーが発生します) 'code'Get-ItemProperty: 'C:\ Program Files \ Zabbix Agent \ zabbix_agentd.exe 'が存在しないため 行目:2文字:42 +選択-ExpandPropertyパス| Get-ItemProperty).VersionInfo.ProductVe ... 'code' そのマシンとサービスにログオンしました存在し、実行中です。 – Tram

+0

'Invoke-Command'でラップして、' VersionInfo'の問い合わせをリモートコンピュータ上で行うことができます。私はそれを行うために私の答えを編集しました。 – BenH

関連する問題