27Aug
WMI και ο νεότερος αδελφός του CIM μπορούν να χρησιμοποιηθούν και για τη διαχείριση των μηχανών των Windows στο περιβάλλον σας.Αλλά ξέρετε τη διαφορά μεταξύ τους;Ελάτε μαζί μας καθώς ρίχνουμε μια ματιά.
Να είστε βέβαιος να διαβάσετε τα προηγούμενα άρθρα της σειράς:
- Μάθετε πώς να αυτοματοποιήσετε τα Windows με PowerShell
- Μάθετε να χρησιμοποιείτε Cmdlets στο PowerShell
- Μάθετε πώς να χρησιμοποιείτε αντικείμενα στο PowerShell
- Μάθηση μορφοποίησης, φιλτράρισμα και σύγκριση σε PowerShell
- Μάθετε να χρησιμοποιείτε Remoting inPowerShell
Και μείνετε συντονισμένοι για την υπόλοιπη σειρά όλη την εβδομάδα.
Εισαγωγή
Το WMI αντιπροσωπεύει το Windows Management Instrumentation.Η λέξη "Instrumentation" αναφέρεται στο γεγονός ότι το WMI σάς επιτρέπει να λαμβάνετε πληροφορίες σχετικά με την εσωτερική κατάσταση του υπολογιστή σας, όπως τα όργανα ταμπλό του αυτοκινήτου σας μπορούν να ανακτήσουν και να εμφανίσουν πληροφορίες σχετικά με την κατάσταση των εσωτερικών εξαρτημάτων των αυτοκινήτων σας.Το
WMI αποτελείται από ένα αποθετήριο που περιέχει κλάσεις που αντιπροσωπεύουν στοιχεία που θα μπορούσαν να διαχειριστούν μέσα στο μηχάνημά σας.Με αυτό εννοούμε ακριβώς επειδή η WMI έχει μια κλάση Win32_Battery δεν σημαίνει ότι το μηχάνημά σας περιέχει μπαταρία.Αυτές οι κλάσεις μπορούν στη συνέχεια να αναζητηθούν για πληροφορίες τοπικά ή ακόμα και σε ένα δίκτυο χρησιμοποιώντας μια γλώσσα ερωτήματος πολύ παρόμοια με την SQL που ονομάζεται WQL.Ωστόσο, το WMI είναι γνωστό ότι είναι πολύ αναξιόπιστο, κυρίως λόγω του γεγονότος ότι βασίζεται σε RPC( Remote Procedure Calls), τα οποία κάνουν κάποια τρελά πράγματα με τα λιμάνια στα οποία επιλέγουν να επικοινωνούν.
Ξεκινώντας με τα Windows 8 και Server 2012, το WMI καταργείται σταδιακά υπέρ του κοινού μοντέλου πληροφοριών ή του CIM για σύντομο χρονικό διάστημα.Η μόνη διαφορά μεταξύ του WMI και του CIM είναι τα πρωτόκολλα μεταφοράς που χρησιμοποιούν.Ενώ το WMI εκτελεί ερωτήματα χρησιμοποιώντας απομακρυσμένες κλήσεις διαδικασίας, το CIM χρησιμοποιεί το HTTP, το οποίο φαίνεται να κάνει τεράστια διαφορά.Στο backend εξακολουθούν να μιλάνε στον ίδιο χώρο αποθήκευσης πληροφοριών.
Χρησιμοποιώντας WMI
Ο γρηγορότερος και ευκολότερος τρόπος διερεύνησης των πληροφοριών που είναι διαθέσιμες σε εσάς μέσω του WMI είναι να τραβήξετε ένα αντίγραφο οποιουδήποτε ελεύθερου Browser αντικειμένου 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 και στο Server 2012, η κίνηση προς τα εμπρός είναι σίγουρα ο δρόμος προς την κατεύθυνση.
Get-CimInstance -ClassName Win32_LogicalDisk
Υπάρχει επίσης συμπλήρωση καρτέλας για την παράμετρο -ClassName όταν χρησιμοποιείτε το Get-CimInstance, το οποίο δείχνει ότι προς τα εμπρός αυτό είναι όπου οι προσπάθειες της Microsoft θα επικεντρωθούν.
Στην πραγματικότητα, το WMI αναπτύχθηκε από μια εντελώς ξεχωριστή ομάδα εντός της Microsoft, αλλά στη συνέχεια αναλήφθηκε από τους υπεύθυνους του PowerShell.Ήταν αυτοί που παρατήρησαν ότι θα είναι πολύ δύσκολο να καθαρίσετε το χάος WMI που απομένει.Σε μια προσπάθεια αντιμετώπισης της κατάστασης, προσπαθούν να καταστήσουν το WMI και το CIM πιο διαθέσιμο γράφοντας cmdlet περιτύλιξης που χρησιμοποιούν WMI και CIM κάτω από την κουκούλα.Ο μόνος τρόπος για να ελέγξετε αν ένα cmdlet είναι περιτύλιγμα είναι να εξετάσετε την τεκμηρίωση.Για παράδειγμα, το cmdlet Get-Hotfix είναι ένα περιτύλιγμα για την κλάση Win32_QuickFixEngineering, όπως φαίνεται στην τεκμηρίωση.
Αυτό σημαίνει ότι μπορείτε να λάβετε τις επείγουσες επιδιορθώσεις σε απομακρυσμένα μηχανήματα χρησιμοποιώντας το cmdlet Get-HotFix αντί για ερώτημα WMI.
Get-HotFix -ComputerName localhost
Επομένως, το έχετε.Απλά θυμηθείτε ότι εάν υπάρχει ένα ειδικό cmdlet, θα θέλετε πάντα να το χρησιμοποιήσετε, ακολουθούμενο από το CIM αν δεν υπάρχει cmdlet.Τέλος, εάν όλα τα υπόλοιπα αποτύχουν ή έχετε παλαιότερες μηχανές στο περιβάλλον σας, θα θέλετε να χρησιμοποιήσετε το WMI.Αυτό είναι το μόνο που έχω για αυτή τη φορά.Σας βλέπουμε αύριο για περισσότερη διασκέδαση PowerShell.