Variables 使用PowerShell 4自动断开变量

Variables 使用PowerShell 4自动断开变量,variables,powershell,Variables,Powershell,使用PowerShell 2,我可以正确使用$$变量 PS > $PSVersionTable.PSVersion.Major 2 PS > Convert-Path 'Program Files' C:\Program Files PS > Convert-Path $$ C:\Program Files 但是,对于PowerShell 4,相同的命令会产生错误 PS > $PSVersionTable.PSVersion.Major 4 PS > Con

使用PowerShell 2,我可以正确使用
$$
变量

PS > $PSVersionTable.PSVersion.Major
2

PS > Convert-Path 'Program Files'
C:\Program Files

PS > Convert-Path $$
C:\Program Files
但是,对于PowerShell 4,相同的命令会产生错误

PS > $PSVersionTable.PSVersion.Major
4

PS > Convert-Path 'Program Files'
C:\Program Files

PS > Convert-Path $$
Convert-Path : Cannot find path 'C:\'Program Files'' because it does not exist.
如何将此示例用于PowerShell 4

一种方法是:

Convert-Path 'Program Files'

Convert-Path ($$ -replace "`'", '')
评论后编辑:

 Convert-Path ($$ -replace "^`'|`'$", '')

要仅替换$$

开头和结尾的单引号,可以使用
Invoke Expression
展开字符串

PS > Convert-Path 'Program Files'
C:\Program Files

PS > Convert-Path (Invoke-Expression $$)
C:\Program Files
使用别名:

PS > cvpa (iex $$)
C:\Program Files
您甚至可以使用它来创建自己的自动变量。在这里,我使用
4
,因为它与
$
位于同一个键上

将此信息放入您的个人资料中:

$Global:4 = 0
$null = Set-PSBreakpoint -Variable 4 -Action {
        $global:4 = Invoke-Expression $$} -Mode Read
然后您可以运行:

PS > Convert-Path 'Program Files'
C:\Program Files

PS > Convert-Path $4
C:\Program Files

试试看,如果路径是
ProgramFiles'
,我现在无法测试它,这将失败。