使用ref关键字通过引用传递变量

时间:2015-01-15 09:53:09

标签: powershell powershell-v3.0 ref

我尝试在PowerShell中通过引用传递failedFlag:

功能调用:

$failedFlag = $false

$message += createMSSQLBak -failedFlag ([ref]$failedFlag) -serverName "X\X" -backupDirectory "D:\ms-sql-backup\backup\X" -daysToStoreBackups 90

功能原型:

function createMSSQLBak ([ref]$failedFlag, $serverName, $backupDirectory, $daysToStoreBackups)
{
 [...]
 $failedFlag = $true
 [...]
}

$ failedFlag在我的函数之外总是假的。

函数原型或调用有问题吗?

1 个答案:

答案 0 :(得分:4)

Get-Help about_Ref有一些有用的代码示例。他们在没有真正提及的情况下使用 .Value ,但这是您在这里失踪的关键。

function createMSSQLBak ([ref]$failedFlag, $serverName, $backupDirectory, $daysToStoreBackups)
{
    [...]
    $failedFlag.Value = $true
    [...]
}

那应该这样做。事实证明[ref]实际上使它成为System.Management.Automation.PSReference类型的变量,这是一个只有一个属性的泛型类。它在MSDN甚至PowerShell内部帮助中都没有很好的文档记录。