我是编程世界和PowerShell脚本的新手。我的同事给了我这个命令,让我运行它来确定程序PROGRAM.EXE
是否在一个计算机列表上运行。但我发现很难在50多台机器上做到这一点。我想使用powershell的forEach函数来运行它。这是我已经做的,但我没有得到预期的结果。通常他使用这个> tasklist /s COMPUTER1 /svc /fi "IMAGENAME eq PROGRAM.EXE")
这给了几个结果,当程序安装时,它返回名称,和程序的PID,否则它说aucune tƒche en service ne correspond aux critŠres sp‚cifi‚s.
我想使用它,但与powershell,与计算机列表。
这是我尝试过的,但我觉得bloked
$postes = @('COMPUTER1', 'COMPUTER2', 'COMPUTER3')
Foreach($element in $postes)
{
$( tasklist /s $($element) /svc /fi "IMAGENAME eq PROGRAM.EXE")
}
我希望切换情况下的结果,如果或没有程序安装.但结果是无法控制的。有人能帮帮我吗。
谢谢大家。
2条答案
按热度按时间tp5buhyn1#
根据您要查询的远程计算机的数量,您可以检查是否可以在循环中访问每台计算机并仅查询联机计算机。比如这样:
如果你真的有很多计算机要检查,你可以切换到PowerShell版本7,并使用其内置功能与
Foreach-Object -Parallel
并行运行命令。Get-Help Foreach-Objectnc1teljy2#
如果您具有远程访问这些计算机的权限,并且在这些计算机上启用了WMI,则可以使用
Get-WmiObject
cmdlet。如果你更喜欢一句话:
如果您需要快速运行它,我建议您使用PowerShell库中的
PSParallel
模块并行运行它。这将允许您在一行程序中使用
Invoke-Parallel
cmdlet: