【发布时间】:2023-03-05 20:27:01
【问题描述】:
我正在编写一个 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-Processcmdlet,以便您可以优雅地将参数传递给 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 - 不需要任何信用,因为一旦你有时间考虑答案就很清楚了。谢谢你! [咧嘴]
标签: powershell tfs visual-studio-2017