我正在尝试编写一个 PowerShell 脚本,以便在启动计算机后启动程序。我将内容从注册表的“运行”区域中取出,并按照我想要的顺序将它们放入脚本中,然后为不重要的项目插入一些延迟,以便立即运行。例如,这是启动 Outlook 的代码:
# Outlook
Start-Sleep -s 10
Invoke-Item "c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"
这对于没有开关的路径有效,但如果涉及开关,我就无法让它工作。例如,这是 Windows Live Messenger 的启动命令:
c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background
因此空格也会引起一些问题。我尝试过这个:
#Start-Sleep -s 10
$test= {"c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe"}
Invoke-Item $test /background
但这也不起作用。
有任何想法吗?
答案1
使用Invoke-Expression
:
#Start-Sleep -s 10
$test= "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background"
Invoke-Expression $test
答案2
嗨,Twitter 上有人帮我找到了解决方案。
我根本不需要 Invoke-Item 命令,而且我一开始也尝试过不使用它,但用 & 符号开头是可行的。因此,我的代码应该是:
& 'c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe' /background
希望这能对将来的其他人有所帮助,因为我在网上找不到太多信息。