我目前正在编写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
_____________________________________________________________
答案 0 :(得分:0)
尝试这样做。你这样做会让变量$processesDefined
留下一个表标题(PATH),这会搞砸。
$processesDefined += (get-process -name $i).Path
这种方式只会为您提供没有表格标题的路径