使用PowerShell 4打破自动变量

时间:2014-07-21 07:04:22

标签: 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 > 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中使用此示例?

about_Automatic_Variables

2 个答案:

答案 0 :(得分:1)

一种方法是:

Convert-Path 'Program Files'

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

评论后编辑:

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

在$$

的开头和结尾只替换单引号

答案 1 :(得分:1)

您可以使用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