代码之家  ›  专栏  ›  技术社区  ›  Rakha

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

  •  2
  • Rakha  · 技术社区  · 8 年前

    我有一个有效的方法(三重双引号不是一个错误,它的工作原理与此完全相同)-专注于 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驱动器解锁。exe文件 )

    我正在尝试:

     """$chemin_fichier"""
    
     ""$chemin_fichier""
    
     "$chemin_fichier"
    
     """"$chemin_fichier""""
    

    什么都不管用。。。

    如何显示该变量?这个命令很混乱,正确的组合是什么?我必须逃避什么吗?

    非常感谢你的帮助!

    2 回复  |  直到 8 年前
        1
  •  1
  •   Maximilian Burszley    8 年前

    我会用喷溅将你的命令分解成碎片:

    $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
    

    不需要将命令包装在脚本块中。

        2
  •  1
  •   yu yang Jian    6 年前

    我使用带有如下参数的命令,它将替换 store:Schema="abcd" 要清空字符串,关键是要转义 " "" """" ,您应该进行尝试、测试和修改,以确保脚本正常工作:

    powershell -Command "$varStr='store:Schema=""abcd""""'; $filePath='%~dp0SomeFolder\SomeFile.txt'; (gc $filePath) -replace $varStr, '' | Out-File $filePath"
    
    推荐文章