Geek School Χρησιμοποιώντας PowerShell για να πάρετε πληροφορίες υπολογιστών
Το WMI και ο νεώτερος αδερφός του CIM μπορούν να χρησιμοποιηθούν και για τη διαχείριση των μηχανών των Windows στο περιβάλλον σας. Αλλά ξέρετε τη διαφορά μεταξύ τους; Ελάτε μαζί μας καθώς ρίχνουμε μια ματιά.
Βεβαιωθείτε ότι έχετε διαβάσει τα προηγούμενα άρθρα της σειράς:
- Μάθετε πώς να αυτοματοποιήσετε τα Windows με το PowerShell
- Μάθηση χρήσης Cmdlets στο PowerShell
- Πώς να χρησιμοποιήσετε αντικείμενα στο PowerShell
- Εκμάθηση μορφοποίησης, φιλτράρισμα και σύγκριση σε PowerShell
- Μάθετε να χρησιμοποιείτε Remoting στο PowerShell
Και μείνετε συντονισμένοι για όλη την εβδομάδα.
Εισαγωγή
Το WMI σημαίνει Windows 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-Κλάση Win32_LogicalDisk
Εάν θέλετε να λάβετε τις πληροφορίες από άλλον υπολογιστή στο δίκτυό σας, μπορείτε απλά να χρησιμοποιήσετε την παράμετρο ComputerName.
Get-WmiObject-Κλάση 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.