亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在PowerShell中使用帶有空格和引號的參數運行EXE文件

如何在PowerShell中使用帶有空格和引號的參數運行EXE文件

梵蒂岡之花 2019-10-24 15:36:45
如何在PowerShell中運行以下命令?C:\ Program Files \ IIS \ Microsoft Web Deploy \ msdeploy.exe -verb:sync -source:dbfullsql =“數據源= mysource;集成安全性= false;用戶ID = sa; Pwd = sapass !;數據庫= mydb;” -dest:dbfullsql =“ Data Source =。\ mydestsource; Integrated Security = false; User ID = sa; Pwd = sapass!; Database = mydb;”,計算機名= 10.10.10.10,用戶名= administrator,密碼= adminpass“
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

當PowerShell看到以字符串開頭的命令時,它只會對字符串求值,也就是說,它通常會將其回顯到屏幕,例如:


PS> "Hello World"

Hello World

如果您希望PowerShell將字符串解釋為命令名稱,請使用調用運算符(&),如下所示:


PS> & 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe'

之后,您可能只需要引用包含空格和/或引用字符的參數/參數對。當您使用復雜的命令行參數調用像這樣的EXE文件時,擁有一個向您展示PowerShell如何將參數發送到EXE文件的工具通常非常有幫助。在PowerShell的社區擴展有這樣的工具。它稱為echoargs。您只需用echoargs替換EXE文件-保留所有參數,這將向您展示EXE文件如何接收參數,例如:


PS> echoargs -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass


Arg 0 is <-verb:sync>

Arg 1 is <-source:dbfullsql=Data>

Arg 2 is <Source=mysource;Integrated>

Arg 3 is <Security=false;User>

Arg 4 is <ID=sa;Pwd=sapass!;Database=mydb;>

Arg 5 is <-dest:dbfullsql=Data>

Arg 6 is <Source=.\mydestsource;Integrated>

Arg 7 is <Security=false;User>

Arg 8 is <ID=sa;Pwd=sapass!;Database=mydb; computername=10.10.10.10 username=administrator password=adminpass>

使用echoargs可以嘗試直到正確為止,例如:


PS> echoargs -verb:sync "-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;"

Arg 0 is <-verb:sync>

Arg 1 is <-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;>

事實證明,在維護連接字符串周圍的雙引號之前,我付出了很大的努力。顯然這不是必需的,因為即使cmd.exe也會將其刪除。


順便說一句,向PowerShell團隊致敬。如果您需要將內部雙引號保留在適當的位置,它們對顯示單引號和雙引號的具體含義很有幫助。:-)他們也意識到這是一個痛苦的領域,但是受特定問題影響的人數的驅動。如果這是您的不便,請投票提交PowerShell Bug。


有關PowerShell如何解析的更多信息,請查看我的有效PowerShell博客系列 -特別是項目10-“了解PowerShell解析模式”


查看完整回答
反對 回復 2019-10-24
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

只需在.exe名稱前添加&運算符。這是在靜默模式下安裝SQL Server Express的命令:


$fileExe = "T:\SQLEXPRADV_x64_ENU.exe"

$CONFIGURATIONFILE = "T:\ConfSetupSql2008Express.ini"


& $fileExe  /CONFIGURATIONFILE=$CONFIGURATIONFILE


查看完整回答
反對 回復 2019-10-24
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

我在命令和參數中都有空格,這對我有用:


$Command = "E:\X64\Xendesktop Setup\XenDesktopServerSetup.exe"

$Parms = "/COMPONENTS CONTROLLER,DESKTOPSTUDIO,DESKTOPDIRECTOR,LICENSESERVER,STOREFRONT /PASSIVE /NOREBOOT /CONFIGURE_FIREWALL /NOSQL"


$Prms = $Parms.Split(" ")

& "$Command" $Prms

它與Akira的答案基本相同,但是如果您動態構建命令參數并將其放在變量中,則此方法有效。


查看完整回答
反對 回復 2019-10-24
  • 3 回答
  • 0 關注
  • 1703 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號