Windows 故障转移群集无法设置群集资源

Windows 故障转移群集无法设置群集资源

https://docs.microsoft.com/en-us/powershell/module/failoverclusters/set-clusterparameter?view=windowsserver2016-ps

Microsoft(和其他公司)对此有很好的文档,但对我来说不起作用。我正在尝试设置 IP 地址参数。问题是 IP 地址不属于允许修改的对象类型。

例如这失败了(来自 MS 文档)

PS C:\> Get-ClusterResource -Name "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="172.24.22.168";"Network"="Cluster Network 2";"EnableDhcp"=1}

集群的 IP 地址是“集群 IP 地址”。我可以看到它。GetType() 是 PSObject。但是当我运行 Set-ClusterParameter 命令时,错误是:

Set-ClusterParameter:输入对象无法绑定到该命令的任何参数,因为该命令不接受管道输入,或者输入及其属性与任何接受管道输入的参数不匹配。

如果我尝试使用该对象。

PS C:\Users\rdejournett> Set-ClusterParameter -InputObject

$SqlIpAddress Set-ClusterParameter:无法将参数“InputObject”绑定到目标。异常设置“InputObject”:“管道中的对象无效。此 cmdlet 仅接受以下类型的对象:Microsoft.FailoverClusters.PowerShell.Cluster、Microsoft.FailoverClusters.PowerShell.ClusterGroup、Microsoft.FailoverClusters.PowerShell.ClusterResource、Microsoft.FailoverClusters.PowerShell.ClusterResourceType、Microsoft.FailoverClusters.PowerShell.ClusterNetwork、Microsoft.FailoverClusters.PowerShell.ClusterNetworkInterface、Microsoft.FailoverClusters.PowerShell.ClusterNode、Microsoft.FailoverClusters.PowerShell.ClusterSharedVolume、Microsoft.FailoverClusters.PowerShell.ClusterParameter”

(对象是这样设置的)

$SqlIpAddress = Get-ClusterResource | Where-Object {$_.Name.StartsWith("集群 IP 地址")}

尽管有文档说明,但 IP 地址资源似乎不是一种可以设置的资源类型(或者我做错了什么……)

答案1

这真是太不可思议了。MS 文档导致了非常奇怪的结果。

答案是我使用了错误版本的 powershell。不要使用 Powershell 7。使用 Windows 自带的 powershell 版本。

该命令应该可以工作:

PS C:\Users\rdejournett> $t = Get-ClusterGroup -Name "Cluster Group"
PS C:\Users\rdejournett> $t.GetType()

结果对象类型应为

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    ClusterGroup                             Microsoft.FailoverClusters.PowerShell.ClusterObject

在 powershell 7 中,BaseType 是 psobject - 基本上它所做的是将所有内容存储为基础对象(与集群组相关),因此所有管道都无法正常工作。

相关内容