我试图在 python 中找到我的工作组名称,有人知道这个函数吗?
问问题
258 次
2 回答
0
import wmi
wmi_os = wmi.Win32_ComputerSystem()[0]
print(wmi_os.Workgroup)
你也可以走得更远,看看print(wmi_os.__dict__['properties'].keys())
dict_keys(['AdminPasswordStatus', 'AutomaticManagedPagefile', 'AutomaticResetBootOption', 'AutomaticResetCapability', 'BootOptionOnLimit', 'BootOptionOnWatchDog', 'BootROMSupported', 'BootStatus', 'BootupState', 'Caption', 'ChassisBootupState', 'ChassisSKUNumber', 'CreationClassName', 'CurrentTimeZone', 'DaylightInEffect', 'Description', 'DNSHostName', 'Domain', 'DomainRole', 'EnableDaylightSavingsTime', 'FrontPanelResetStatus', 'HypervisorPresent', 'InfraredSupported', 'InitialLoadInfo', 'InstallDate', 'KeyboardPasswordStatus', 'LastLoadInfo', 'Manufacturer', 'Model', 'Name', 'NameFormat', 'NetworkServerModeEnabled', 'NumberOfLogicalProcessors', 'NumberOfProcessors', 'OEMLogoBitmap', 'OEMStringArray', 'PartOfDomain', 'PauseAfterReset', 'PCSystemType', 'PCSystemTypeEx', 'PowerManagementCapabilities', 'PowerManagementSupported', 'PowerOnPasswordStatus', 'PowerState', 'PowerSupplyState', 'PrimaryOwnerContact', 'PrimaryOwnerName', 'ResetCapability', 'ResetCount', 'ResetLimit', 'Roles', 'Status', 'SupportContactDescription', 'SystemFamily', 'SystemSKUNumber', 'SystemStartupDelay', 'SystemStartupOptions', 'SystemStartupSetting', 'SystemType', 'ThermalState', 'TotalPhysicalMemory', 'UserName', 'WakeUpType', 'Workgroup'])
其中一些可能对您有用
于 2022-02-12T08:27:44.650 回答
0
我一直在寻找确切的东西,但找不到通过 Python 的直接方法。相反,我不得不使用subprocess
来运行PowerShell
命令:
import subprocess
domain = subprocess.run(["powershell.exe", "(Get-CimInstance Win32_ComputerSystem).Domain"], stdout=subprocess.PIPE, text=True)
domain = domain.stdout.strip()
print(domain)
您也可以通过stdout.strip()
直接附加到subprocess()
:
import subprocess
domain = subprocess.run(["powershell.exe", "(Get-CimInstance Win32_ComputerSystem).Domain"], stdout=subprocess.PIPE, text=True).stdout.strip()
print(domain)
结果:
"mydomain.com" # domain-joined computer
# OR
"workgroup" # workgroup name
我已经包含了 string 方法strip()
来删除产生的尾随\n
字符STDOUT
。
PowerShell 命令(Get-CimInstance Win32_ComputerSystem).Domain
检索计算机加入的域名,如果未加入域,则仅检索工作组名称。
注意:
我在 StackOverflow 上看到了使用 PowerShell command 的旧建议,该命令Get-WmiObject
仅适用于PowerShell 5.1。 Microsoft 建议使用较新的Get-CimInstance
,它适用于 PowerShell 5.1 和更新版本(即:PowerShell Core)
于 2020-11-16T19:41:24.877 回答