J'ai essayé d'extraire diverses informations du PC distant de Python par la bibliothèque WMI

introduction

Il était nécessaire de collecter diverses informations sur des centaines de PC clients, et j'ai aimé écrire du code Python, c'est donc un mémo à ce moment-là. À propos, il est supposé être dans un environnement de domaine AD.

Préparation

PC distant

Vérifiez si les services suivants sont en cours d'exécution sur le PC distant. S'il ne semble pas en cours d'exécution, configurez-le pour qu'il démarre automatiquement selon la stratégie de groupe ou la force.

Paramètres de stratégie de groupe AD

Reportez-vous à la page suivante et activez la connexion RPC du PC distant à l'aide de la stratégie de groupe. Activer la gestion à distance du pare-feu Windows

Pour refléter immédiatement la stratégie de groupe, appliquez-la du côté du PC distant.

cmd.exe


gpupdate /force

Préférences Python

Installez les modules requis pour WMI du côté de la connexion à distance (environnement d'exécution de code Python).

pip install pypiwin32
pip install wmi

Exemple de code

sample.py


# coding: utf-8

import wmi

NODE = "host-1.example.local"
USER = "Administrator@MYDOMAIN"
PASS = "P@ssW0rd!"

##Initialisation du client WMI (lors de la connexion à un PC local)
#conn = wmi.WMI()
##Initialisation du client WMI (lors de la connexion à un PC distant)
conn = wmi.WMI(NODE, user=USER, password=PASS)

#Obtenir le nom de l'ordinateur
# Win32_OperatingSystem => http://www.wmifun.net/library/win32_operatingsystem.html
obj = conn.Win32_OperatingSystem()[0]
print("Hostname: %s" % obj.CSName)

##Vérification de l'espace libre du lecteur C(Unité GB, jusqu'à 2 chiffres après la virgule décimale)
## Win32_Classe LogicalDisk=> 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))

##Confirmer le compte utilisateur actuellement connecté
## Win32_Classe ComputerSystem=> http://www.wmifun.net/library/win32_computersystem.html
obj = conn.Win32_ComputerSystem()[0]
print("LogonUser: %s" % obj.UserName)

##Confirmation du numéro de série du PC (numéro de série)
## Win32_Classe ComputerSystemProduct=> http://www.wmifun.net/library/win32_computersystemproduct.html
obj = conn.Win32_ComputerSystemProduct()[0]
print("SerialNo: %s" % obj.IdentifyingNumber)

##Exécution de la commande
## Win32_Classe de processus=> http://www.wmifun.net/library/win32_process.html
CMD = "notepad.exe"
CUD = None
##Caractère séparateur pour le chemin complet(\)Plus d'évasion
#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

Résultat d'exécution

% python sample.py
Hostname: HOST-1
FreeSpace: 18.53
LogonUser: MYDOMAIN\user001
SerialNo: JPA12345LF
ProcessId: 3784

Autre

--Lors de l'exécution d'une application sur un PC distant, l'écran ne s'affiche pas pour les applications interactives (Bloc-notes, etc.). Ceci est une spécification de sécurité. (> = Windows XP SP3?)

référence

wmi Tutorial WMI Library

Recommended Posts

J'ai essayé d'extraire diverses informations du PC distant de Python par la bibliothèque WMI
J'ai essayé d'obtenir diverses informations de l'API codeforces
[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
[Introduction à Docker] J'ai essayé de résumer diverses connaissances Docker acquises en étudiant (Windows / Python)
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de résumer comment utiliser matplotlib de python
Je voulais utiliser la bibliothèque Python de MATLAB
J'ai essayé de visualiser les informations spacha de VTuber
[Python] J'ai essayé d'obtenir Json de squid ring 2
J'ai essayé de résumer les opérations de chaîne de Python
J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé d'extraire des caractères des sous-titres (OpenCV: édition tesseract-ocr)
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
Je veux démarrer beaucoup de processus à partir de python
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
J'ai essayé de toucher Python (installation)
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1
J'ai essayé de corriger "J'ai essayé la simulation probabiliste du jeu de bingo avec Python"
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 2
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne
J'ai essayé de visualiser Boeing de la performance du violon par estimation de pose
J'ai essayé de résoudre le problème de planification des équipes par diverses méthodes
J'ai essayé d'extraire des noms de joueurs et de compétences d'articles sportifs
Différentes façons de créer un tableau de nombres de 1 à 10 en Python.
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
[Python] J'ai essayé de reproduire le programme d'évacuation d'urgence pour revenir du monde pour revenir du monde modifié de "La disparition de Haruhi Suzumiya"
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
Programmation Python: j'ai essayé d'obtenir des informations sur l'entreprise (exploration) de Yahoo Finance aux États-Unis en utilisant BeautifulSoup4
J'ai essayé de livrer du courrier depuis Node.js et Python en utilisant le service de livraison de courrier (SendGrid) d'IBM Cloud!
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
J'ai essayé d'extraire des caractères des sous-titres (OpenCV: API Google Cloud Vision)
J'ai essayé d'implémenter la régression linéaire bayésienne par échantillonnage de Gibbs en python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé d'extraire automatiquement les mouvements des joueurs Wiire avec un logiciel
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
J'ai essayé de trouver l'itinéraire optimal du pays des rêves par recuit (quantique)
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé différents modèles de chaînes de date à saisir dans pandas.to_datetime
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)
J'ai essayé différentes versions de l'environnement Python + OpenCV + FFmpeg sur Mac
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
[Lambda] J'ai essayé d'incorporer un module externe de python via S3