对于一个工作项目,我负责开发一个 Python 脚本,该脚本从在 Windows Server 2019 Standard Eval 中运行的 Windows 故障转移群集中读取角色。如果我需要提供更多信息,我可以这样做
问题:
我找不到 WMI 类/对象来获取所需信息,特别是角色和驱动器。此信息可在 Windows Server 上的 Windows 故障转移群集管理器中查看。
我尝试过的:
我已经可以收集有关群集磁盘的信息和有关群集的常见信息。我尝试在 Google 上搜索如何获取角色信息,但没有成功。我希望这里有人可以提供帮助。这是我的工作 Python 代码中的一个示例:
import wmi
wmi_MSCluster = wmi.WMI(namespace="MSCluster")
class MSCluster_Cluster(object):
def __init__(self, name, description, preferredsite, fqdn, caption, quorumpath, roles, sharedvolumesroot, status):
self.name = name
self.description = description
self.preferredsite = preferredsite
self.fqdn = fqdn
self.caption = caption
self.quorumpath = quorumpath
self.roles = roles
self.sharedvolumesroot = sharedvolumesroot
self.status = status
wmi_mscluster = wmi.WMI(moniker='//./root/MSCluster:MSCluster_Cluster')
for MScluster in wmi_mscluster():
ClusterObject: MSCluster_Cluster = MSCluster_Cluster(MScluster.Name, MScluster.Description,
MScluster.PreferredSite, MScluster.Fqdn, MScluster.Caption,
MScluster.QuorumPath, MScluster.Roles,
MScluster.SharedVolumesRoot, MScluster.Status)
在 WMI 中的哪里可以获取有关服务器角色以及与该角色连接的服务/驱动器的信息。我找不到合适的地方查找。
答案1
有许多工具可以向您显示对象模型。例如 Microsoft WMIExplorer.exe- https://devblogs.microsoft.com/scripting/weekend-scripter-announcing-wmi-explorer-2-0 或者 https://archive.codeplex.com/?p=wmie
有此的 PowerShell 版本。
您只需要知道要询问的命名空间。例如,如果我使用 VBScript 来跟踪服务器角色,我只需执行以下操作:
# cscript wmi-server-roles-and-features.vbs
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRoleFeatures = objWMIService.ExecQuery ("Select * from Win32_ServerFeature")
For Each objRoleFeatures in colRoleFeatures
wscript.echo objRoleFeatures.Name
Next
... 我从事自动化/脚本编写工作多年,但从未使用过 Python。所以,我帮不了你。
在 PowerShell 中执行此操作很直接,因为它有特定的本机 cmdlet。
以及诸如...之类的东西
Get-WmiObject -namespace "root\mscluster" ...
或者 ...
Get-WmiObject -Query "select GroupComponent from mscluster_nodetoactivegroup" -namespace root\mscluster -computername ....