PowerShell 在命令中使用引号中的变量

标签 powershell variables quotes variable-expansion

我有这个有效的(三重双引号不是一个错误;它的工作原理与此完全相同) - 专注于 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/

相关文章:

string - 比较 foreach 内的字符串

search - 优化 PowerShell 中的简单搜索脚本

bash - shell - 将变量放入循环的 ALPHABETICAL 范围内

javascript - 使用变量作为参数调用 Javascript 函数

mysql - MySQL 中何时使用单引号、双引号和反引号

windows - 在awk中转义嵌套的双引号

windows - 在Windows 7中获取本地端口号

.net - 如何知道一个变量对于另一个对象来说是否只是 "pointer"或者是否可以独立存在

java - 用一个变量引用不同的类

javascript - PHP - 回显 HTML 的多个嵌套引号