如何执行具有可变值的exe的路径和参数

时间:2018-08-03 11:19:46

标签: powershell

我正在尝试在Powershell脚本中执行以下命令:

D:\Apps\Documentum\product\7.3\bin\idql.exe -udmadmin -pPassword dctm04 -RC:\temp\documentum\session_list.txt -w20 > C:\temp\documentum\session_logstash.txt

在我的Powershell脚本中,我这样做:

$DOCBASE="dctm04"
$USER_DOCBASE="dmadmin"
$USER_PWD="Password01"
$IDQL_PATH="D:\Apps\Documentum\product\7.3\bin"
$QRY_SESSIONS="C:\temp\documentum\session_list.txt"
$QRY_LOG_SESSIONS="C:\temp\documentum\session_logstash.txt"

$IDQL_PATH\idql.exe -u$USER_DOCBASE -p$USER_PWD $DOCBASE -R$QRY_SESSIONS -w20 > $QRY_LOG_SESSIONS

但是它不能正常工作,我收到以下错误消息:

At C:\temp\documentum\Generate.ps1:49 char:13
+   $IDQL_PATH\idql.exe -u$USER_DOCBASE -p$USER_PWD $DOCBASE -R$QRY_SESSIONS -w20  ...
+             ~~~~~~~~~
Unexpected token '\idql.exe' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : UnexpectedToken

我认为,我没有在命令中正确使用变量。

请注意,我的powershell版本是:

PS C:\temp\documentum> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

您能给我解决方案来解决我的问题吗

1 个答案:

答案 0 :(得分:2)

原因是将字符串与可执行文件名称组合起来对Powershell的解析规则没有意义。使用呼叫运算符&Invoke-Item。像这样

$ssms="C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio"
PS C:\> $ssms\ssms.exe
At line:1 char:6
+ $ssms\ssms.exe
+      ~~~~~~~~~
Unexpected token '\ssms.exe' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

C:\>& $ssms\ssms.exe
# Launches SSMS succesfully

C:\>Invoke-Item $ssms\ssms.exe
# Launches SSMS succesfully

关于运行可执行文件的nice a document