當我在沒有管理員的情況下通過批處理檔案運行腳本時,它會傳遞引數,但是當我以管理員身份運行腳本時,它不會傳遞引數。
我正在嘗試下面鏈接中的命令,但沒有成功:

結論:
當腳本在沒有管理員身份的情況下通過批處理檔案運行時,即使腳本中使用的引數被定義為環境引數,例如:[decimal]$env:_vLUF并且無論引數值是否為負,它也可以正常作業,例如:-11.0。
為什么在以管理員身份運行腳本時,Powershell 會正確解釋引數中的減號,而當以管理員身份運行時,它不能正確解釋減號,這是我留給專家的一個問題!
但是,@mklement0 先生很好地回答了我的問題。
uj5u.com熱心網友回復:
您的.ps1腳本的引數宣告有缺陷:
Param(
[decimal]$env:_vLUF # !! WRONG - don't use $env:
)
它應該是:
Param(
[decimal] $_vLUF # OK - regular PowerShell variable
)
PowerShell 中的引數被宣告為常規變數,而不是環境變數 ( $env:)。
(雖然環境變數可以作為引數(引數值)傳遞,但另一種方法是直接在腳本主體中直接按名稱參考它們。)
您的PowerShell CLI 呼叫也有問題,即 quoting。
請嘗試以下操作:
powershell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -Verb RunAs powershell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File \"D:\z_Batchs e Scripts\Batchs\Normaliza_LUFS\ArqsNorms_LUFS_pass.ps1\" -_vLUF %_vLUF%'"
具體來說:
嵌入
"的字符。使用 Windows PowerShell CLI ( ) 時必須轉義為\"(sicpowershell.exe);但是,鑒于它%_vLUF%代表 a[decimal],您根本不需要參考它。但是,您似乎遇到了一個錯誤:如果引數以 開頭
-,例如負數-11.0,-FileCLI 引數總是將其解釋為引數名稱- 即使參考也無濟于事。上面使用的解決方法是使用命名引數,即在值之前加上目標引數名稱:
-_vLUF %_vLUF%
順便說一句:沒有理由使用
& { ... }來呼叫通過-Command(-c) 引數傳遞給 PowerShell CLI 的代碼 - 只需...直接使用,如上所示。舊版本的CLI 檔案錯誤地建議這& { ... }是必需的,但這已得到糾正。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/488531.html
標籤:电源外壳 批处理文件 windows-10-通用 powershell-5.0
