调用 TF.exe 的 powershell 脚本中的表达式或语句中出现意外的令牌“工作区”

Posted

技术标签:

【中文标题】调用 TF.exe 的 powershell 脚本中的表达式或语句中出现意外的令牌“工作区”【英文标题】:Unexpected token 'workspace' in expression or statment in powershell script calling TF.exe 【发布时间】:2020-01-06 12:23:34 【问题描述】:

我正在编写一个 PowerShell(5.1 版)脚本以从 TFS 获取特定项目的最新源代码,但出现错误:

"Unexpected token 'workspace' in expression or statement."

我已在此处搜索并搜索了该错误,但找不到此错误的具体参考。我已经尝试了多种语法组合,并使用单引号和双引号等,但没有任何成功。我不明白这是什么问题...

这是代码:

$TFdir="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer"
$TF="'$TFdir\tf.exe'"
$WorkSpaceName="C:\temp\NewTestBuildProject"
$expr="$TF workspace /new $WorkSpaceName /noprompt /collection:http://(servername):8080/tfs/defaultcollection"

$expr

这就是上面一行的计算结果:

'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe' workspace /new C:\temp\NewTestBuildProject /noprompt /collection:http://(servername):8080/tfs/defaultcollection

这是执行上述表达式的行,是产生错误的地方:

Invoke-Expression $expr

这是它产生的错误:

Invoke-Expression : At line:1 char:143
+ ... ions\Microsoft\TeamFoundation\Team Explorer\tf.exe' workspace /new 
C: ...
+                                                         ~~~~~~~~~
Unexpected token 'workspace' in expression or statement.
At C:\Users\PF12764\Desktop\PS\PublishWithPowerShell.ps1:42 char:1
+ Invoke-Expression $expr
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ParserError: (:) [Invoke-Expression], 
ParseException
+ FullyQualifiedErrorId : 
UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand

【问题讨论】:

我认为您需要查看 & 调用运算符或使用 Start-Process cmdlet,以便您可以优雅地将参数传递给 exe。 Lee_Dailey,你是对的!此命令有效: & "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe" 工作区 /new mytemp /noprompt /collection:http ://(服务器):8080/tfs/defaultcollection 酷!很高兴知道你成功了……[grin] @PatrickLu-MSFT,有什么方法可以将 Lee_Dailey 的评论标记为回复并给予他好评,因为他的回答确实是正确的? @DevilDog - 不需要任何信用,因为一旦你有时间考虑答案就很清楚了。谢谢你! [咧嘴] 【参考方案1】:

Lee_Dailey,你是对的!此命令有效:

& "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe" workspace /new mytemp /noprompt /collection:http://(server):8080/tfs/defaultcollection

【讨论】:

以上是关于调用 TF.exe 的 powershell 脚本中的表达式或语句中出现意外的令牌“工作区”的主要内容,如果未能解决你的问题,请参考以下文章

通过 Powershell 远程 TFS 签入

如何使用 PowerShell 在 TFS 中签出文件?

调用 tf.exe 时如何记住用户名/密码?

如何从其他powershell脚本调用powershell脚本并且脚本是在powershell对象而不是文件中分配的

js 可以 调用powershell 脚本吗

powershell 使用路径和参数调用Powershell脚本