使用get process和get content的Powershell脚本

使用get process和get content的Powershell脚本,powershell,Powershell,正在尝试创建Powershell脚本以查找未在计算机列表(文本文件)上运行的进程。我找到了下面的脚本,但我不确定如何使用get-content cmdlet $ProcessName = "VPDICOMServer" if((get-process $ProcessName -ErrorAction SilentlyContinue) -eq $Null) echo "Process is not running" }else{ echo "Process is running" } 假设您

正在尝试创建Powershell脚本以查找未在计算机列表(文本文件)上运行的进程。我找到了下面的脚本,但我不确定如何使用get-content cmdlet

$ProcessName = "VPDICOMServer"
if((get-process $ProcessName -ErrorAction SilentlyContinue) -eq $Null)
echo "Process is not running" }else{ echo "Process is running" }

假设您的
computers.txt
文件是以新行分隔的计算机名称列表,您可以使用
foreach
循环:

$ProcessName = 'VPDICOMServer'
$Path = "$Env:UserProfile\Documents\computers.txt"

foreach ($Computer in (Get-Content -Path $Path)) {
然后您可以对每个进程执行
Get Process
(假设您有权限):


你试过什么?到目前为止你能做些什么?你能在文件中的所有计算机中循环打印它们吗?太棒了!非常感谢!成功了!只是想知道,如果我能得到回应,也显示计算机名。现在我只得到一个带有“进程正在运行”或“进程未运行”的列表,我必须匹配计算机名称的列表。@Amiehl确定-
“${Computer}:进程正在运行”
注意双引号。@Amiehl通常无需特殊语法(
${}
)即可实现此变量替换,但是因为可以使用
定义驱动器/作用域,所以在本例中有必要使用它。作为我的意思的一个例子,这也是有效的:
“$Computer-Process正在运行”
谢谢。这太有帮助了。我知道我必须把那台$1的电脑放在某个地方——我只是想把它放错地方。
    if (Get-Process -ComputerName $Computer -Name $ProcessName -ErrorAction 'SilentlyContinue') {
        'Process is running'
    } else {
        'Process is not running'
    }
}