此PS1 File
( ) 在执行时将在其自身中以管理员身份test.ps1
运行命令。Pushd $Home; bcdedit /enum bootmgr; pause
PWSH.exe
# test.ps1
$AL = "-NoProfile -WindowStyle Maximized -ExecutionPolicy Bypass",
"-Command", "Pushd $Home; bcdedit /enum bootmgr; pause"
Start -Verb RunAs -FilePath pwsh.exe -ArgumentList $AL
写入格式是什么,如果我执行它(test.ps1
),那么将在 Windows Terminal Elevated/ As Admin 中打开?
我试过:
# test.ps1
$AL = "-M -p 'PowerShell'",
"pwsh.exe -ExecutionPolicy Bypass -Command `"Pushd $Home; bcdedit /enum bootmgr; pause`""
Start -Verb RunAs -FilePath wt.exe -ArgumentList $AL
给出错误:
[error 2147942402 (0x80070002) when launching `" pause"']
[error 2147942402 (0x80070002) when launching `" bcdedit /enum bootmgr"']
我也尝试过其他格式,但错误仍然存在。
仅当一个命令有效:
# test.ps1
$AL = "-M -p 'PowerShell'",
"pwsh.exe -ExecutionPolicy Bypass -Command `"bcdedit /enum bootmgr`""
Start -Verb RunAs -FilePath wt.exe -ArgumentList $AL
命令行
;
上的未转义用于分隔Windows 终端的多个命令。wt.exe
因此,要传递到目标可执行文件的
;
字符 必须进行转义,即as\;
,不幸的是,这始终是必要的 - 即使对于;
内部(嵌入)的字符也是如此"..."
。所以:
笔记:
wt.exe
的-d
选项来传递启动目录。-ArgumentList
,这通常更适合解决长期存在的无法修复的错误 - 请参阅此 SO 答案。