安装Failover-Clustering后需重启才能使用Get-Cluster的问题咨询
解决Azure Windows VM安装Failover-Clustering后需重启导致脚本失败的方案
以下是无需创建自定义镜像、也不用额外自定义脚本扩展的解决办法:
1. 在同一脚本内实现重启后自动续接后续步骤
利用Windows计划任务创建开机触发的任务,将重启后的集群配置、SQL Server部署逻辑放入该任务,实现脚本的断点续跑:
# 安装Failover-Clustering功能 Install-WindowsFeature Failover-Clustering -IncludeAllSubFeature -IncludeManagementTools # 检查是否需要重启 $restartNeeded = (Get-WindowsFeature Failover-Clustering).RestartNeeded if ($restartNeeded -eq 'Yes') { # 定义重启后执行的脚本路径 $postRestartScript = "C:\ClusterPostRestartSetup.ps1" # 写入重启后需要执行的逻辑(替换为你的实际后续步骤) @' # 验证集群模块是否可用 if (Get-Command Get-Cluster -ErrorAction SilentlyContinue) { # 执行集群配置、SQL Server安装/配置等后续步骤 Write-Host "Starting post-restart cluster and SQL setup..." # 示例命令:Get-Cluster # 你的其他SQL配置脚本逻辑... # 任务完成后删除自身计划任务 schtasks /delete /tn "PostRestartClusterSetup" /f Remove-Item $MyInvocation.MyCommand.Path -Force } '@ | Out-File -FilePath $postRestartScript -Encoding UTF8 # 创建开机触发的系统级计划任务,高权限执行脚本 schtasks /create ` /tn "PostRestartClusterSetup" ` /tr "powershell.exe -ExecutionPolicy Bypass -File `"$postRestartScript`"" ` /sc onstart ` /ru SYSTEM ` /rl highest ` /f # 强制重启虚拟机 Restart-Computer -Force } else { # 无需重启,直接执行后续步骤 Write-Host "No restart needed, proceeding with cluster and SQL setup..." Get-Cluster # 你的其他SQL配置脚本逻辑... }
2. 尝试手动导入集群模块(仅适用于部分无需重启的场景)
部分情况下,安装功能后虽然提示需重启,但手动导入模块可临时使用集群命令,可尝试在安装后立即导入模块:
Install-WindowsFeature Failover-Clustering -IncludeAllSubFeature -IncludeManagementTools -Restart:$false # 尝试导入FailoverClusters模块 Import-Module FailoverClusters -ErrorAction Stop # 验证命令是否可用 if (Get-Command Get-Cluster -ErrorAction SilentlyContinue) { # 直接执行后续步骤 Get-Cluster # 你的其他SQL配置脚本逻辑... } else { # 导入失败则执行方案1的重启+计划任务逻辑 # 此处可复用方案1中的计划任务创建和重启代码 }
注意:该方法仅适用于部分Windows镜像版本,若模块导入失败,仍需依赖方案1的重启续跑逻辑。
内容的提问来源于stack exchange,提问作者Paul Russell
相关产品推荐
相关产品推荐

