我正试图绕过Powershell并拥有以下内容:
$servers = Get-Content -Path C:\servers.txt
Get-Process -name AVProcess -cn $servers | % where {$_.Status -eq "Running"}
#Export-Csv -path "C:\server-process-sophos.csv"
我收到一个错误,看起来我不能在参数计算机名称中使用$ servers变量,也发送到CSV文件了。理想情况下,我希望能够将每个服务器名称,进程状态通过CSV管道传输到行中。
我正在尝试返回一个服务器列表,这些服务器没有运行或没有运行该进程 - 所以我可以看看他们是否安装了基本上用于库存报告的AV(如果有些没有AV,这是不好的! )。我怎么能最好地解决这个问题?
提前致谢
答案 0 :(得分:0)
Get-Process
没有“状态”属性。使用Get-Service.
检查每台计算机上的服务状态会更好/更容易。您只需要在此代码中修改服务名称,使其与您的服务名称相匹配。此外,输出将转到两个不同的文件,一个在服务可用于检查时使用,另一个在没有所需名称的服务时使用。它适用于PowerShell V3。
$servers = Get-Content -Path C:\servers.txt
$ErrorActionPreference='stop'
ForEach ($server in $servers) {
try
{
Get-Service -name <enterServiceNameHere> -cn $server | Export-Csv -append -Path "C:\server-process-sophos.csv" -noType -Force
}
catch [System.Management.Automation.ActionPreferenceStopException]
{
$psObject = $null
$psObject = New-Object psobject
$OutputString = "cannot find this service on: " + $server
Add-Member -InputObject $psObject -MemberType noteproperty -Name "List" -Value $OutputString
Export-Csv -InputObject $psObject -Append -path "C:\ServersWithNoService.csv" -NoType -Force
}
}