Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何使用可变参数执行dos命令_Powershell_Argument Passing_Variable Expansion - Fatal编程技术网

Powershell 如何使用可变参数执行dos命令

Powershell 如何使用可变参数执行dos命令,powershell,argument-passing,variable-expansion,Powershell,Argument Passing,Variable Expansion,如果我跑步: <somecommand> -e "SHOW DATABASES" -u<user> -p<password> -e“显示数据库”-u-p 它运行。但如果我尝试: <somecommand> -e "SHOW DATABASES" -u$sqlUser -p$sqlPassword -e“显示数据库”-u$sqlUser-p$sqlPassword 它失败是因为变量未展开 在powershell中完成此任务的最简单方法是什么?

如果我跑步:

<somecommand> -e "SHOW DATABASES" -u<user> -p<password>
-e“显示数据库”-u-p
它运行。但如果我尝试:

<somecommand> -e "SHOW DATABASES" -u$sqlUser -p$sqlPassword
-e“显示数据库”-u$sqlUser-p$sqlPassword
它失败是因为变量未展开


在powershell中完成此任务的最简单方法是什么?

假设somecommand是exe(或您所说的DOC命令),请尝试以下方法:

<somecommand> -e "SHOW DATABASES" "-u$sqlUser" "-p$sqlPassword"
-e“显示数据库”-u$sqlUser”-p$sqlPassword

我想我尝试了4095件其他东西。。。。但这确实奏效了!谢谢你的回复!在这种情况下,PowerShell将使用参数解析模式,这意味着它尝试让您在不必使用引号的情况下指定字符串参数(引号很快就会过时)。看到-u$sqlUser是明智的,在本例中,它将扩展变量,但将-u$sqlUser视为字符串。您可以通过在PowerShell(以及相邻的文本)周围加双引号来强制PowerShell展开变量。是的,当然这也会起作用
-u“$sqlUser”
。当传递给exe时,无论是它的
“-u$sqlUser”
还是前面的方式,都不重要。