Windows Server 2008 r2 - Powershell 仅返回群集资源的值



我正在尝试使用 powershell 评估群集服务器上 SQL 代理设置的 powershell 命令中的值。我是Powershell的新手,但我们希望设置一个监视器,以确保我们所有的Windows Server 2008 r2集群都具有正确的此设置。

我确实通过在 PS 提示符下使用以下设置找到了有问题的设置......

cluster resource 'SQL Server Agent' /prop : RestartAction

问题是我希望它只返回以下输出中"值"列下的数字(1 或 1(0x1) 就可以了)。

Listing properties for 'SQL Server Agent':
T  Resource             Name                           Value
-- -------------------- ------------------------------ -----------------------
D  SQL Server Agent     RestartAction                  1 (0x1)

因为这将是一个监视器,我需要能够评估值是否为 = 1,然后在不是时报告。如果我可以让 powershell 只返回简单值,我可以完成在 T-SQL 中设置监视器的其余部分。

我一直在互联网上搜索试图找到答案,但一切都与 cmdlet 和函数有关,我想要的只是返回 Windows 服务器值。也许它不是那么简单,但我想在进行长时间的脚本冒险之前检查一下。

我感谢任何帮助,谢谢!!

是否可以使用故障转移群集模块?

(Get-ClusterResource -Cluster Cluster1 -Name 'SQL Server Agent').RestartAction

如果没有,字符串解析它:

PS> $clus = cluster /cluster:cluster1 resource 'SQL Server Agent' /prop:RestartAction
PS> $clus[10]
D  SQL Server Agent     RestartAction                  1 (0x1)    
PS> $clus[10] -replace '^.+((.+))$','$1'
0x1

如果无法加载故障转移群集模块,并且无需分析,则可以使用 WMI:

gwmi -ComputerName cluster1 -Authentication PacketPrivacy -Namespace "rootmscluster" -Class MSCluster_Resource -Filter "name LIKE 'SQL Server Agent%'" |
select -ExpandProperty RestartAction

最新更新