【发布时间】:2015-01-29 08:28:18
【问题描述】:
我有一个场景,我需要构建一个 Powershell 路径为$RemotePath = '$($env:USERPROFILE)\Desktop\Shell.lnk'。该变量被传递到需要执行的远程机器。远程机器将其作为字符串变量接收。如何扩展字符串以评估$env:USERPROFILE?
【问题讨论】:
标签: powershell variable-expansion remote-execution
我有一个场景,我需要构建一个 Powershell 路径为$RemotePath = '$($env:USERPROFILE)\Desktop\Shell.lnk'。该变量被传递到需要执行的远程机器。远程机器将其作为字符串变量接收。如何扩展字符串以评估$env:USERPROFILE?
【问题讨论】:
标签: powershell variable-expansion remote-execution
通过使用双引号。 PowerShell 不会扩展单引号字符串中的变量。
【讨论】:
$ExecutionContext.InvokeCommand.ExpandString($RemotePath)
【讨论】:
Invoke-Expression 和 [ScriptBlock]::Create()、$ExecutionContext.InvokeCommand.ExpandString 可能会被恶意代码注入利用,请参阅:[命令使用规则:[ScriptBlock]::Create]( github.com/PowerShell/PSScriptAnalyzer/issues/1454)