PowerShell:使用Get-Process解析变量启动流程

时间:2014-06-12 23:50:20

标签: powershell powershell-v2.0 powershell-ise

我目前正在编写PowerShell脚本来停止一些进程,启动一个程序,然后重新启动这些进程。当我将进程提供给数组变量以便稍后重新启动它时,就会出现问题。

我的代码:

$direc     = "C:\Program Files (x86)\PathTo\Program.exe";
$arguments = "/theseArguments1", "/theseArguments2";
$processesDefined = @();
$processes = "notepad", "explorer";

ForEach ($i in $processes)
{
    $processesDefined += get-process -name $i | select-object path;
    get-process -name $i | stop-process -force;
}

start-process -filepath $direc -ArgumentList $arguments -NoNewWindow -wait;

ForEach ($i in $processesDefined)
{
    start-process -filepath $i;
}

当调试$ processesDefined.Count时显示2并且$ processesDefined按预期显示但是当它到达开始进程的时间时我得到:

Start-Process : This command cannot be executed due to the error: The system ca
nnot find the file specified.
At D:\Desktop\Aion.ps1:17 char:18
+     start-process <<<<  -FilePath $i;
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOp 
   erationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.C 
   ommands.StartProcessCommand

我做了很多搜索,但找不到任何真正的帮助。任何有关这方面的帮助将不胜感激。谢谢。

$ processesDefined的输出:

[DBG]: PS D:\Desktop>>> $processesDefined

Path                                                                           
----                                                                           
C:\Program Files\Windows Media Player\wmpnetwk.exe                             
C:\Windows\explorer.exe                                                        



_____________________________________________________________

1 个答案:

答案 0 :(得分:0)

尝试这样做。你这样做会让变量$processesDefined留下一个表标题(PATH),这会搞砸。

$processesDefined += (get-process -name $i).Path

这种方式只会为您提供没有表格标题的路径