我有这个有效的(三重双引号不是一个错误;它的工作原理与此完全相同) - 专注于 Start-Process
部分:
Start-Process powershell -Credential $cred -WorkingDirectory "$lettre_disque" -ArgumentList '-noprofile -command &{Start-Process """D:\WD Drive Unlock.exe""" -verb runas}'
现在我只是尝试将字符串 D:\WD Drive Unlock.exe
替换为名为 $chemin_fichier
的变量,该变量包含完全相同的文本 (D:\WD Drive Unlock.exe
)。
我正在尝试:
"""$chemin_fichier"""
""$chemin_fichier""
"$chemin_fichier"
""""$chemin_fichier""""
没有任何效果...
如何让该变量显示出来?这个命令非常令人困惑。什么是正确的组合?我必须逃避什么吗?
最佳答案
我会使用 splatting 将你的命令分成几部分:
$chemin_fichier = 'D:\WD Drive Unlock.exe'
$ArgList = @{
FilePath = 'powershell'
Credential = $cred
WorkingDirectory = $lettre_disque
ArgumentList = @(
'-NoProfile'
'-Command'
"`"Start-Process -FilePath '$chemin_fichier' -Verb runas`""
)
}
Start-Process @ArgList
没有必要将命令包装在脚本 block 中。
关于PowerShell 在命令中使用引号中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819965/