私は以下のコードを持っており、現在バージョン情報とサービスステータスについてコンピューターをチェックしています。
私が抱えている問題は、サーバーが別の場所にある .exe を持っていることです:
- C:\program files\snare\snarecore.exe
- C:\program files (x86)\snare\snarecore.exe
- D:\apps\snare\snarecore.exe
以下のスクリプトを取得して正しいバージョンを実行するにはどうすればよいですか? サービスがチェックしているパスを使用できると思いますか? 私はこれをすべてリモートで行っており、サーバーに対する権利を持っており、正常に動作していますが、実行可能ファイルの 3 つの場所すべてに基づいて 3 つ (またはそれ以上!) のスクリプトを作成する必要があります。
また、名前にスペースが含まれているファイル (../program file..) の場合、powershell が行全体を読み取り、名前のスペースが原因でエラーが発生しないようにするには、どこに引用符を付ければよいでしょうか?
コード:
clear
$ErrorActionPreference = "silentlycontinue"
$Logfile = "C:\temp\output_cdrive.log"
Function LogWrite
{
param([string]$logstring)
Add-Content $Logfile -Value $logstring
}
$computer = Get-Content -Path c:\temp\servers2.txt
foreach ($computer1 in $computer){
$Service = Get-WmiObject Win32_Service -Filter "Name = 'Snare'" -ComputerName $computer1
if (test-connection $computer1 -quiet)
{
$version = (Get-Command ""\\$computer1\c$\Program Files (x86)\Snare\SnareCore.exe"").FileVersionInfo.FileVersion
if($Service.state -eq 'Running')
{
LogWrite "$computer1 STARTED $version"
}
else
{
LogWrite "$computer1 STOPPED $version"
}
}
else
{
LogWrite "$computer1 is down" -foregroundcolor RED
}
}
ありがとう、