0

我正在尝试使用 powershell 评估集群服务器上 SQL 代理设置的 powershell 命令的值。我对 Powershell 非常陌生,但我们想设置一个监视器以确保我们所有的 Windows Server 2008 r2 集群都具有正确的设置。

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

cluster resource 'SQL Server Agent' /prop : RestartAction

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

Listing properties for 'SQL Server Agent':

T  Resource             Name                           Value
-- -------------------- ------------------------------ -----------------------
D  SQL Server Agent     RestartAction                  1 (0x1)

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

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

我感谢任何帮助,谢谢!

4

2 回答 2

0

如果无法加载 failoverclusters 模块并且无需解析,则可以使用 WMI:

gwmi -ComputerName cluster1 -Authentication PacketPrivacy -Namespace "root\mscluster" -Class MSCluster_Resource -Filter "name LIKE 'SQL Server Agent%'" |
select -ExpandProperty RestartAction
于 2013-01-27T17:28:00.293 回答
0

您可以使用 FailoverClusters 模块吗?

(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
于 2013-01-25T22:00:39.923 回答