Το WMI και ο νεότερος αδελφός του CIM μπορούν και οι δύο να χρησιμοποιηθούν για τη διαχείριση των υπολογιστών Windows στο περιβάλλον σας. Αλλά γνωρίζετε τη διαφορά μεταξύ τους; Ελάτε μαζί μας καθώς ρίχνουμε μια ματιά.

Φροντίστε να διαβάσετε τα προηγούμενα άρθρα της σειράς:


  • Μάθετε πώς να αυτοματοποιείτε τα Windows με το PowerShell Μαθαίνοντας να χρησιμοποιείτε Cmdlets στο PowerShell Learning Πώς να χρησιμοποιείτε αντικείμενα στο PowerShell Learning Μορφοποίηση, φιλτράρισμα και σύγκριση στο PowerShell Μάθετε να χρησιμοποιείτε το Remoting στο PowerShell

Και μείνετε συντονισμένοι για την υπόλοιπη σειρά όλη την εβδομάδα.

Εισαγωγή

Το WMI σημαίνει Windows Management Instrumentation. Η λέξη "Instrumentation" αναφέρεται στο γεγονός ότι το WMI σάς επιτρέπει να λαμβάνετε πληροφορίες σχετικά με την εσωτερική κατάσταση του υπολογιστή σας, όπως τα όργανα ταμπλό στο αυτοκίνητό σας που μπορούν να ανακτήσουν και να εμφανίσουν πληροφορίες σχετικά με την κατάσταση των εσωτερικών εξαρτημάτων του αυτοκινήτου σας.

Το WMI αποτελείται από ένα αποθετήριο που περιέχει κλάσεις που αντιπροσωπεύουν στοιχεία που θα μπορούσαν να διαχειριστούν μέσα στο μηχάνημά σας. Αυτό σημαίνει ότι το WMI έχει κλάση Win32_Battery δεν σημαίνει ότι το μηχάνημά σας περιέχει μπαταρία. Αυτά τα μαθήματα μπορούν στη συνέχεια να ερωτηθούν για πληροφορίες τοπικά ή ακόμη και σε ένα δίκτυο χρησιμοποιώντας μια γλώσσα ερωτήματος πολύ παρόμοια με τη SQL που ονομάζεται WQL. Ωστόσο, το WMI ήταν γνωστό ότι είναι πολύ αναξιόπιστο, κυρίως λόγω του γεγονότος ότι βασίζεται σε RPC (Απομακρυσμένες διαδικασίες κλήσεων), οι οποίες κάνουν κάποια τρελά πράγματα με τις θύρες στις οποίες επιλέγουν να επικοινωνήσουν.

Ξεκινώντας με τα Windows 8 και τον διακομιστή 2012, το WMI καταργείται σταδιακά υπέρ του Common Information Model ή του CIM. Η μόνη διαφορά μεταξύ WMI και CIM είναι τα πρωτόκολλα μεταφοράς που χρησιμοποιούν. Ενώ το WMI εκτελεί ερωτήματα χρησιμοποιώντας απομακρυσμένες κλήσεις διαδικασίας, το CIM χρησιμοποιεί HTTP, το οποίο φαίνεται να κάνει τεράστια διαφορά. Στο backend μιλούν ακόμα στο ίδιο αποθετήριο πληροφοριών.

Χρήση WMI

Ο πιο γρήγορος και ευκολότερος τρόπος εξερεύνησης των διαθέσιμων πληροφοριών μέσω του WMI είναι να πάρετε ένα αντίγραφο οποιουδήποτε δωρεάν προγράμματος περιήγησης αντικειμένων WMI. Μας αρέσει αυτό. Μόλις κατεβάσετε, ενεργοποιήστε το και θα έχετε μια γραφική διεπαφή για να περιηγηθείτε στις τάξεις WMI.

εικόνα

Εάν θέλετε να μάθετε κάτι σχετικά με τη διαμόρφωση του δίσκου ενός υπολογιστή, πατήστε το συνδυασμό πληκτρολογίου Ctrl + F για να εμφανιστεί ένα πλαίσιο αναζήτησης, στη συνέχεια πληκτρολογήστε "logicaldisk" και πατήστε enter.

εικόνα

Αμέσως αυτό θα σας οδηγήσει στην τάξη Win32_LogicalDisk.

εικόνα

Στο κάτω μισό της εφαρμογής, μπορείτε να δείτε ότι έχουμε δύο παρουσίες της τάξης.

εικόνα

Μόλις έχουμε την τάξη που ψάχνουμε, η ερώτησή της από το PowerShell είναι ευθεία.

Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
εικόνα

Δεν έχω δει αυτή τη σύνταξη για λίγο με άτομα που προτιμούν να χρησιμοποιούν τη νέα παραμετροποιημένη σύνταξη.

Get-WmiObject –Class Win32_LogicalDisk
εικόνα

Εάν θέλετε να λάβετε τις πληροφορίες από άλλον υπολογιστή στο δίκτυό σας, μπορείτε απλά να χρησιμοποιήσετε την παράμετρο ComputerName.

Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper –Credential viper \ διαχειριστής
εικόνα

Χρησιμοποιώντας το CIM

Λάβετε υπόψη ότι το CIM είναι διαθέσιμο μόνο στα Windows 8 και στον διακομιστή 2012, προχωρώντας σίγουρα αυτός είναι σίγουρα ο τρόπος να συνεχίσετε.

Get-CimInstance –ClassName Win32_LogicalDisk
εικόνα

Υπάρχει επίσης ολοκλήρωση καρτέλας για την παράμετρο –ClassName όταν χρησιμοποιείτε το Get-CimInstance, το οποίο δείχνει ότι προς τα εμπρός είναι εκεί όπου θα επικεντρωθούν οι προσπάθειες της Microsoft.

Στην πραγματικότητα, το WMI αναπτύχθηκε από μια εντελώς ξεχωριστή ομάδα μέσα στη Microsoft, αλλά στη συνέχεια αναλήφθηκε από τους υπεύθυνους του PowerShell. Ήταν αυτοί που παρατήρησαν ότι θα ήταν πολύ δύσκολο να καθαριστεί το χάος που άφησε πίσω το WMI. Σε μια προσπάθεια να διορθώσει την κατάσταση, προσπαθούν να κάνουν τα WMI και CIM πιο διαθέσιμα γράφοντας cmdlet περιτυλίγματος που χρησιμοποιούν WMI και CIM κάτω από την κουκούλα. Ο μόνος τρόπος για να ελέγξετε εάν ένα cmdlet είναι ένα περιτύλιγμα είναι κοιτάζοντας την τεκμηρίωση. Για παράδειγμα, το Get-Hotfix cmdlet είναι ένα περιτύλιγμα για την κλάση Win32_QuickFixEngineering, όπως φαίνεται στην τεκμηρίωση.

εικόνα

Αυτό σημαίνει ότι μπορείτε να λάβετε τις επείγουσες επιδιορθώσεις σε απομακρυσμένα μηχανήματα χρησιμοποιώντας το cmdlet Get-HotFix αντί για ένα ερώτημα WMI.

Get-HotFix –ComputerName localhost
εικόνα

Λοιπόν, το έχετε. Απλώς θυμηθείτε ότι εάν υπάρχει ένα αποκλειστικό cmdlet, θα θέλετε πάντα να το χρησιμοποιείτε, ακολουθούμενο από το CIM σε περίπτωση που δεν υπάρχει cmdlet. Τέλος, εάν όλα τα άλλα αποτύχουν, ή έχετε παλαιότερα μηχανήματα στο περιβάλλον σας, θα θελήσετε να χρησιμοποιήσετε το WMI. Αυτό έχω μόνο για αυτή τη φορά. Τα λέμε αύριο για περισσότερη διασκέδαση στο PowerShell.