【问题标题】:Expand string Variable stored via Single Quote in Powershell展开通过 Powershell 中的单引号存储的字符串变量
【发布时间】:2015-01-29 08:28:18
【问题描述】:

我有一个场景,我需要构建一个 Powershell 路径为$RemotePath = '$($env:USERPROFILE)\Desktop\Shell.lnk'。该变量被传递到需要执行的远程机器。远程机器将其作为字符串变量接收。如何扩展字符串以评估$env:USERPROFILE

【问题讨论】:

    标签: powershell variable-expansion remote-execution


    【解决方案1】:

    通过使用双引号。 PowerShell 不会扩展单引号字符串中的变量。

    【讨论】:

    • 当使用双引号时,变量在本地扩展,而不是在远程端,如 OP 所希望的那样。
    • 我明白了。感谢您的正确答案和解释:)
    • 是的。正如 Ansgar 提到的,我的要求是评估远程机器上的表达式,因为我想要来自远程机器的 UserProfile 值。
    【解决方案2】:

    Expand the string在远端:

    $ExecutionContext.InvokeCommand.ExpandString($RemotePath)
    

    【讨论】:

    • 请注意,Invoke-Expression[ScriptBlock]::Create()$ExecutionContext.InvokeCommand.ExpandString 可能会被恶意代码注入利用,请参阅:[命令使用规则:[ScriptBlock]::Create]( github.com/PowerShell/PSScriptAnalyzer/issues/1454)
    猜你喜欢
    • 2017-06-06
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2022-01-12
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多