使用开关运行 PowerShell 的 Invoke-Item

使用开关运行 PowerShell 的 Invoke-Item

我正在尝试编写一个 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

希望这能对将来的其他人有所帮助,因为我在网上找不到太多信息。

相关内容