使用 ref 关键字按引用传递变量

Passing Variables By Reference using the ref keyword

我尝试在 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 在我的函数之外始终为 false。

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

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

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

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