我想检查Outlook,Word,Excel,......是否正在运行,并将它们列为:
Microsoft Outlook正在运行
Microsoft Word未运行
我写的是这样的:
$ProcessName = "outlook"
if((get-process $ProcessName -ErrorAction SilentlyContinue) -eq $Null)
{ echo "Process is not running" }else{ echo "Process is running" }
并且适用于一个Processname但不知道如何制作多个并列出它们。
答案 0 :(得分:2)
您可以像这样传递一系列进程:
@("outlook", "word") |
ForEach-Object
{
if((Get-Process $_ -ErrorAction SilentlyContinue) -eq $null)
{Write-Host "$_ not running"}
else
{Write-Host "$_ is running"}
}
注意:为了便于阅读,我将其拆分为多行。
如果您想要更具描述性的内容,可以在流程上使用Description
属性(如果存在):
@("outlook", "word") |
ForEach-Object
{
if(($p=(Get-Process $_ -ErrorAction SilentlyContinue)) -eq $null)
{Write-Host "$_ not running"}
else
{Write-Host "$($p.Description) is running"}
}
请注意它如何将Get-Process
的结果捕获到$p
中,并且我们必须使用语法$($p.Description)
将其打印在Write-Host
中。
答案 1 :(得分:1)
有一千种方法可以实现这一目标。我会选择这样的东西:
@(
"Word",
"Outlook",
"Excel"
) | Foreach-Object {
if (Get-Process $_ -ErrorAction SilentlyContinue)
{ Write-Output "$_ is running" }
else { Write-Output "$_ is not running" }
}
这是一个包含你想检查的任何应用程序的数组,然后循环检查它们是否正在运行并显示相应的输出。
答案 2 :(得分:0)
尝试此命令:
Get-Process $processName -ErrorAction Stop