Exchange 2007 事件ID:9782:在 CCR 节点上安装 Exchange 2007 CCR Service Pack 2 后备份失败

请考虑以下情形。CCR 节点上安装了 Microsoft Exchange Server 2007 群集连续复制 (CCR) Service Pack 2 (SP2)。但是,当您尝试的 Exchange 2007 服务器 CCR 节点上执行备份,备份将失败。此外,在应用程序日志中记录以下错误消息:
登录名称: 应用程序
源: MSExchangeIS
日期: 日期时间
事件 ID: 9782
任务类别: Exchange VSS 书写器
级别: 错误
关键字: 经典
用户: 不适用
计算机: Server_Name
说明:
Exchange VSS 书写器 (实例 e0e81d26-6564-4b83-b923-aeb17068e5ff:3) 未成功完成的存储组第一个存储组的备份。没有日志文件已被截断此存储组。
因为 Exchange 备份扩展名不在 Exchange 2007 CCR SP2 安装期间安装的则会发生此问题。当您运行 Exchange 2007 CCR service pack 时,只安装备份扩展 Exchange 安装程序使用 /upgradecms 开关的程序。
若要解决此问题,您必须运行下列的 PowerShell 脚本,在 Exchange 管理外壳程序内。若要这样做,请按照下列步骤操作:
1.在记事本中创建一个空白文档。
2.复制到记事本文档的下方显示 PowerShell 脚本。
3.在 Exchange 脚本文件夹中保存该文件并将其命名为 注册 WSBExchange.ps1。
4.关闭记事本。
5.单击 开始,指向 所有程序、 都指向 Microsoft Exchange Server 2007,然后单击 Exchange 管理外壳程序。
6.在命令行上键入 注册 WSBExchange.ps1,然后按 ENTER 键。
回到顶端
PowerShell 脚本注册-WSBExchange.ps1:
#
# THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK
# OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.
#
# Synopsis: This script is to be used to help register and unregister
# the WSBPlugin for Exchange 2007
# Define the script parameters
param([switch] $Register = $false,
[switch] $UnRegister = $false);
# Define global variables
$script:WsbBinPath = “”;
$script:reg= join-path (join-path $env:SystemRoot system32) reg.exe;
$script:servicecmd = join-path (join-path $env:SystemRoot system32) sc.exe;
$script:InstallPath
# This function will Register the WSB extension for Exchange backup/restore
function Register-WSBExchange
{
if ([Environment]::OSVersion.Version.Major -ge 6)
{
if ((get-service wsbexchange* | where {$_.name -eq “wsbexchange”}))
{
if ((get-service wsbexchange).Status -eq “Running”)
{
Start-SetupProcess -Name:”$servicecmd” -Args:”stop wsbexchange”;
}
Start-SetupProcess -Name:”$servicecmd” -Args:”delete wsbexchange”;
}
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\CLSID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /t REG_SZ /d `”CExchangeHelper Class`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\CLSID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /v AppId /t REG_SZ /d `”{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\CLSID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}\LocalServer32`” /t REG_SZ /d `”$WsbBinPath`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\APPID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /t REG_SZ /d `”CExchangeHelper Class`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\APPID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /v LocalService /t REG_SZ /d `”wsbexchange`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\APPID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /v LaunchPermission /t REG_BINARY /d `”010004806000000070000000000000001400000002004c0003000000000014001f000000010100000000000512000000000018001f000000010200000000000520000000200200000000180003000000010200000000000520000000270200000102000000000005200000002002000001020000000000052000000020020000`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKCR\APPID\wsbexchange.exe`” /v AppId /t REG_SZ /d `”{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKLM\Software\Microsoft\windows nt\currentversion\WindowsServerBackup\Application Support\{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}`” /v `”Application Identifier`” /t REG_SZ /d Exchange /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKLM\Software\Microsoft\windows nt\currentversion\WindowsServerBackup\Application Support\{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}`” /v CLSID /t REG_SZ /d `”{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKLM\Software\Microsoft\windows nt\currentversion\WSBAppExchangeHelper`” /v AutoMarkDbRecoverable /t REG_DWORD /d 1 /f”;
Start-SetupProcess -Name:”$reg” -Args:”add `”HKLM\Software\Microsoft\windows nt\currentversion\WSBAppExchangeHelper`” /v AutoMountOnPITRecovery /t REG_DWORD /d 1 /f”;
Start-SetupProcess -Name:”$servicecmd” -Args:”create wsbexchange binpath= `”$WsbBinPath`” type= own start= demand error= ignore obj= LocalSystem DisplayName= `”Microsoft Exchange Server Extension for Windows Server Backup`””;
Start-SetupProcess -Name:”$servicecmd” -Args:”description wsbexchange `”Enables Windows Server Backup users to back up and recover application data for Microsoft Exchange Server.`””;
}
}
# This function will UnRegister the WSB extension for Exchange backup/restore
function UnRegister-WSBExchange
{
if ([Environment]::OSVersion.Version.Major -ge 6)
{
if ((get-service wsbexchange* | where {$_.name -eq “wsbexchange”}))
{
if ((get-service wsbexchange).Status -eq “Running”)
{
Start-SetupProcess -Name:”$servicecmd” -Args:”stop wsbexchange”;
}
Start-SetupProcess -Name:”$servicecmd” -Args:”delete wsbexchange”;
Start-SetupProcess -Name:”$reg” -Args:”delete `”HKCR\CLSID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”delete `”HKCR\APPID\{D8A2E312-3B17-4293-B71E-CD72A7C04BF3}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”delete `”HKCR\APPID\wsbexchange.exe`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”delete `”HKLM\Software\Microsoft\windows nt\currentversion\WindowsServerBackup\Application Support\{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}`” /f”;
Start-SetupProcess -Name:”$reg” -Args:”delete `”HKLM\Software\Microsoft\windows nt\currentversion\WSBAppExchangeHelper`” /f”;
}
}
}
# This funciton will validate the script parameters
function Validate-Parameters
{
$validParams = $true;
$errorString = “`n`n################################################################################`n”
$errorString += “# There were errors validating the script parameters! #`n”
$errorString += “################################################################################`n”
if (!$Register -and !$UnRegister)
{
# User specified neither the Register or UnRegister action
$validParams = $false;
$errorString += “`nERROR: You must specify either the `”Register`” or `”UnRegister`” action.`n”
}
if ($Register -and $UnRegister)
{
# User specified both the Register and UnRegister actions
$validParams = $false;
$errorString += “`nERROR: You can only specify either the `”Register`” or `”UnRegister`” action, but not both.`n”
}
if (!$validParams)
{
$errorString += “`n`nUse -? to see the usage of the script.`n”
Write-Warning “$errorString`n`n”
}
else
{
# Get the FQDN for this server
$ipGlobalProperties = [System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties();
# Get Exchange setup path
$Reg_ExSetup = “SOFTWARE\\Microsoft\\Exchange\\Setup”
$SetupPathVALUE = “MsiInstallPath”
# Open remote registry
$registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $ipGlobalProperties.HostName);
# Set regKey for MsiInstallPath
$regKey= $registry.OpenSubKey($REG_ExSetup)
# Get Install Path from Registry and replace : with $
$script:InstallPath = $regkey.getvalue($SetupPathVALUE)
# Set WSBExchange.exe path
$binFile = “Bin\wsbexchange.exe”
$script:WsbBinPath = [System.IO.Path]::Combine($installPath, $binFile);
}
return $validParams;
}
function Usage
{
@”
********************************************************************************
SUMMARY:
This script assists in the registration of WSB extension for Exchange 2007
database backup restore plugin.
********************************************************************************
USAGE:
Register-WSBExchange.ps1 <-Register | -UnRegister> [-ExchangeBinPath]
-Register`tRegister WSBExchange.
-UnRegister`tRemove WSBExchange.
********************************************************************************
“@
}
####################################################################################################
# Script starts here
####################################################################################################
# Check for Usage Statement Request
if (($args.Count -gt 0) -and ($args[0] -imatch “-{1,2}[?h]”))
{
# User wants the Usage Statement
Usage
return
}
# Check if user specified either the Register or UnRegister switches
if (Validate-Parameters)
{
# Change to the bin directory where Exchange was installed.
pushd $InstallPath;
# Simply add necessary cmdlet
Remove-PSSnapin “Microsoft.Exchange.Management.PowerShell.Admin”
Add-PSSnapin “Microsoft.Exchange.Management.PowerShell.Setup”
if ($Register)
{
Write-Host “Now installing WSBExchange…”;
Register-WSBExchange
}
elseif ($UnRegister)
{
Write-Host “Now uninstalling WSBExchange…”;
UnRegister-WSBExchange
}
# Restore Exchange Powershell snapin
Remove-PSSnapin “Microsoft.Exchange.Management.PowerShell.Setup”
Add-PSSnapin “Microsoft.Exchange.Management.PowerShell.Admin”
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注