Es war notwendig, verschiedene Informationen von Hunderten von Client-PCs zu sammeln, und ich habe es genossen, Python-Code zu schreiben, daher ist dies zu dieser Zeit ein Memo. Übrigens wird davon ausgegangen, dass es sich in einer AD-Domänenumgebung befindet.
Überprüfen Sie, ob die folgenden Dienste auf dem Remote-PC ausgeführt werden. Wenn es nicht ausgeführt zu werden scheint, stellen Sie es so ein, dass es gemäß der Gruppenrichtlinie oder der Force automatisch gestartet wird.
Lesen Sie die folgende Seite und aktivieren Sie die RPC-Verbindung des Remote-PCs mithilfe der Gruppenrichtlinie. Remoteverwaltung der Windows-Firewall aktivieren
Um die Gruppenrichtlinie sofort wiederzugeben, setzen Sie sie auf der Remote-PC-Seite durch.
cmd.exe
gpupdate /force
Installieren Sie die für WMI erforderlichen Module auf der Remoteverbindungsseite (Python-Code-Ausführungsumgebung).
pip install pypiwin32
pip install wmi
sample.py
# coding: utf-8
import wmi
NODE = "host-1.example.local"
USER = "Administrator@MYDOMAIN"
PASS = "P@ssW0rd!"
##Initialisierung des WMI-Clients (bei Verbindung mit einem lokalen PC)
#conn = wmi.WMI()
##Initialisierung des WMI-Clients (bei Verbindung mit einem Remote-PC)
conn = wmi.WMI(NODE, user=USER, password=PASS)
#Computernamen abrufen
# Win32_OperatingSystem => http://www.wmifun.net/library/win32_operatingsystem.html
obj = conn.Win32_OperatingSystem()[0]
print("Hostname: %s" % obj.CSName)
##C Laufwerksfreigabe prüfen(GB-Einheit, bis zu 2 Stellen nach dem Komma)
## Win32_LogicalDisk-Klasse=> http://www.wmifun.net/library/win32_logicaldisk.html
obj = conn.Win32_LogicalDisk(DeviceID='C:')[0]
free = float(obj.FreeSpace) / 1024 / 1024 / 1024
print('FreeSpace: {:.2f}'.format(free))
##Bestätigen Sie das aktuell angemeldete Benutzerkonto
## Win32_ComputerSystem-Klasse=> http://www.wmifun.net/library/win32_computersystem.html
obj = conn.Win32_ComputerSystem()[0]
print("LogonUser: %s" % obj.UserName)
##Bestätigung der PC-Seriennummer (Seriennummer)
## Win32_ComputerSystemProduct-Klasse=> http://www.wmifun.net/library/win32_computersystemproduct.html
obj = conn.Win32_ComputerSystemProduct()[0]
print("SerialNo: %s" % obj.IdentifyingNumber)
##Befehlsausführung
## Win32_Prozessklasse=> http://www.wmifun.net/library/win32_process.html
CMD = "notepad.exe"
CUD = None
##Trennzeichen für vollständigen Pfad(\)Weitere Flucht
#CMD = "C:\\Users\\Public\\Desktop\\example.exe"
#CUD = "C:\\Users\\Public\\Desktop"
SW_SHOWNORMAL = 1
p_startup = conn.Win32_ProcessStartup.new()
p_startup.ShowWindow = SW_SHOWNORMAL
pid, result = conn.Win32_Process.Create(
CommandLine=CMD,
CurrentDirectory=CUD,
ProcessStartupInformation=p_startup
)
if result == 0:
print "ProcessId: %d" % pid
else:
raise RuntimeError, "Problem creating process: %d" % result
Ausführungsergebnis
% python sample.py
Hostname: HOST-1
FreeSpace: 18.53
LogonUser: MYDOMAIN\user001
SerialNo: JPA12345LF
ProcessId: 3784
Recommended Posts