客戶有個升級包,xxx.exe, 使用CMD運行后,會進行一些交互操作。比如,安裝到某一步驟,會詢問你是否執行該步驟。
現在需要通過PowerShell進行自動化升級,也就是目標exe通過PowerShell執行。
比較友好的做法可以參考winrm的配置,會提供一個[quiet]參數,或者說參數可以通過外部傳入也是可以的。
但是,假如目標exe確實沒有提供額外參數,我們該如何自動話執行呢?
上面的問題轉化為搜索引擎可識別的問題就是“如何讓PowerShell在需要確認的時候自動輸入?”
換成英語再這么一google
https://stackoverflow.com/questions/14071012/how-do-i-automatically-answer-yes-to-a-prompt-in-powershell
這個問題下,出去PowerShell本身命令通過-Confirm:$false可以關閉之后,其他回答基本都是:
ECHO Y | TARGET.exe
這個ECHO
一看就是個alias,我們看看它的面目
通過管道,我們把ECHO Y
的輸出作為TARGET.exe
的輸入。
新建TEST.PS1
$confirmation = Read-Host "Are you Sure You Want To Proceed?"
if ($confirmation -eq 'y') {
"GO!!!"
}
執行:
我們執行的是PowerShell.exe,TEST.PS1作為其參數
那如果腳本中出現多次確認呢?
$confirmation = Read-Host "Are you Sure You Want To Proceed?"
if ($confirmation -eq 'y') {
"GO!!!"
}
$confirmation = Read-Host "Are you Sure You Want To Proceed2?"
if ($confirmation -eq 'n') {
"GO2!!!"
$confirmation = Read-Host "Are you Sure You Want To Proceed3?"
if ($confirmation -eq 'y') {
"GO3!!!"
}
}
我們輸入的"y"只作用了第一次的詢問。
即使,輸入的"y"能作用于所有的詢問,也是有問題的,多次詢問中,我們有時候需要回復"y",有時候需要回復"n"。
...
沒啥思路,也不好找關鍵詞搜索
開個腦洞,傳入數組進去看看如何?
天不生我XXX,PowerShell萬古如長夜。
當前名稱:PowerShell自動回復執行文件的詢問-創新互聯
文章起源:http://vcdvsql.cn/article36/ddpopg.html
成都網站建設公司_創新互聯,為您提供手機網站建設、定制開發、移動網站建設、動態網站、商城網站、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯