You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Start-Job调用Restore-AzRecoveryServicesBackupItem时类型绑定失败求助

解决Start-Job中Azure恢复点对象类型转换失败的问题

问题原因

使用Start-Job异步执行恢复操作时,传递的恢复点对象会被PowerShell序列化处理,生成Deserialized.Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.AzureVmRecoveryPoint类型的对象。虽然原始的AzureVmRecoveryPoint是RecoveryPointBase的派生类,但反序列化后的对象丢失了类型继承的元数据,导致Restore-AzRecoveryServicesBackupItem无法识别它为有效的参数类型。

解决方案

核心思路是不直接传递恢复点对象,而是传递其唯一标识ID,在Job内部重新获取原始的恢复点对象,同时在Job进程中重新设置Azure恢复服务Vault的上下文。

修改后的完整代码:

$recoveryPoints = Get-AzRecoveryServicesBackupRecoveryPoint `
    -Item           $backupItem `
    -StartDate      ( (Get-Date).AddDays(-1).ToUniversalTime() ) `
    -EndDate        ( (Get-Date).ToUniversalTime() )

# 提取恢复点、备份项和Vault的ID,用于Job内部查询
$rpId = $recoveryPoints[0].RecoveryPointId
$backupItemId = $backupItem.BackupItemId
$vaultId = (Get-AzRecoveryServicesVault).Id

$scriptBlock = {
    try {
        # Job进程是独立会话,必须重新设置Vault上下文
        Set-AzRecoveryServicesVault -Id $args[3]
        
        # 根据ID重新获取备份项和恢复点的原始对象
        $targetBackupItem = Get-AzRecoveryServicesBackupItem -BackupItemId $args[1]
        $targetRp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $targetBackupItem -RecoveryPointId $args[0]

        $restoreJob = Restore-AzRecoveryServicesBackupItem `
            -RecoveryPoint     $targetRp `
            -TargetResourceGroupName $args[2] `
            -StorageAccountName $args[4].Name `
            -StorageAccountResourceGroupName $args[4].ResourceGroupName

        Wait-AzRecoveryServicesBackupJob -Job $restoreJob -Timeout 3600
    }
    catch {
        Throw "$_"
    }
}

# 传递ID和其他参数到Job
$asyncJob = Start-Job -ScriptBlock $scriptBlock -ArgumentList $rpId, $backupItemId, $rgName, $vaultId, $storageAccount

关键说明

  • 重新设置Vault上下文:Start-Job启动的进程不会继承当前会话的Azure配置,必须用Set-AzRecoveryServicesVault重新关联目标Vault。
  • 用ID替代对象传递:字符串类型的ID在序列化时不会丢失类型信息,Job内部通过ID查询得到的是Cmdlet可识别的原始对象。
  • 简单参数直接传递:资源组名称、存储账户的属性(如Name、ResourceGroupName)都是简单类型,可直接传入Job。

内容的提问来源于stack exchange,提问作者ryansin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:33:42