使用 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 内部帮助中都没有很好的记录。
我尝试在 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 内部帮助中都没有很好的记录。