我有以下代码,目前正在检查计算机的版本信息和服务状态。
我遇到的问题是服务器在不同的地方有定位的 .exe:
- C:\程序文件\snare\snarecore.exe
- C:\程序文件 (x86)\snare\snarecore.exe
- D:\apps\snare\snarecore.exe
如何让下面的脚本运行正确的版本?我想我可以使用服务正在检查的路径吗?我正在远程完成这一切,并且拥有服务器的权限并且工作正常 - 但我不得不根据可执行文件所在的所有三个位置制作三个(或更多!)脚本!
另外,对于名称中有空格的那些(../程序文件..),我应该在哪里加上引号,以便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
}
}
谢谢,