Powershell Invoke-Expressions暂停

时间:2017-12-21 02:17:54

标签: powershell

我编写了一个Powershell脚本,该脚本使用Steam的命令行工具登录并检查我正在运行的社区服务器的更新。见下文:

$steamcmdFolder = 'C:\download\steam'
$steamcmdExec = $steamcmdFolder+"\steamcmd.exe"
$forceinstall = 'force_install_dir'+$steamcmdFolder
$appupdate = 'app_update 258550'
$cmdOutput = "$steamcmdExec +login anonymous"

do  {

Write-Host Checking for an update....

Invoke-Expression $cmdOutput
Invoke-expression $forceinstall
Invoke-expression $appupdate

} 

while ($Update = 1)

Invoke-Expression行是我想按照我拥有它们的顺序执行的各个命令行语句。出于某种原因,第一个Invoke-Expression工作正常但其他人没有 - 一切都停止了。我可以在PowerShell命令行中键入$ forceinstall的值,它可以按预期工作。但为什么我不能使用PowerShell做到这一点?欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

如果将其他两行转换为它们的原样,它们似乎不是真正的命令。

#Invoke-expression $forceinstall
Invoke-Expression "force_install_dirC:\download\steam"
#Invoke-expression $appupdate
Invoke-Expression "app_update 258550"

查看SteamCMD文档,您可能希望将其更改为单行命令。

Invoke-Expression "steamcmd +login anonymous +force_install_dir C:\download\steam +app_update 258550 +quit"