我尝试在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在我的函数之外总是假的。
函数原型或调用有问题吗?
答案 0 :(得分:4)
Get-Help about_Ref
有一些有用的代码示例。他们在没有真正提及的情况下使用 .Value
,但这是您在这里失踪的关键。
function createMSSQLBak ([ref]$failedFlag, $serverName, $backupDirectory, $daysToStoreBackups)
{
[...]
$failedFlag.Value = $true
[...]
}
那应该这样做。事实证明[ref]
实际上使它成为System.Management.Automation.PSReference
类型的变量,这是一个只有一个属性的泛型类。它在MSDN甚至PowerShell内部帮助中都没有很好的文档记录。