Попробуйте с этим:
Function CheckProcess([String[]]$sEnterComputerNameHere,[String[]]$sEnterProccessNameHere)
{ #Write-host " $sEnterComputerNameHere"
@($sEnterComputerNameHere) | Foreach-Object {
$computer = $_
Write-Host $computer
@($sEnterProccessNameHere) | Foreach-Object {
$process = $_
Write-Host $process
try{
$x = get-process -computername $computer #Save all processes in a variable
If ($x.ProcessName -contains $process) #use contains instead of equals
{
Write-Output "$process is running"
}
else
{
Write-Output "$process is not running"
}
}
catch
{
Write-Host "Computer $computer not found" -ForegroundColor Yellow
}
}
}
}
$script:sEnterProccessNameHere = @("VPNUI","Notepad++","SMSS")
$script:sEnterComputerNameHere = @("remotecomputer1","remotecomputer2")
CheckProcess -sEnterComputerNameHere $sEnterComputerNameHere -sEnterProccessNameHere $sEnterProccessNameHere
В общем, было бы замечательно, если вы напишите ошибку, которую получите в своем вопросе.Это помогает другим помочь вам.
Если я работаю с массивами и | Foreach
, я всегда пишу $_
в новой переменной.Это помогает, если у меня есть еще один | Foreach
(как у вас), чтобы точно знать, с каким объектом я работаю ..
РЕДАКТИРОВАТЬ: я изменил сценарий, поэтому вместо него используется "-contains"из -eq, и я добавил блок try / catch, поэтому, если другой компьютер не найден, он выдаст вам сообщение ... Он работает в моей сети
EDIT2: У вас есть доступ к другим компьютерам?Если вы запустите get-process -computername "name of remote computer"
Получите ли вы процессы?