Acest articol face parte dintr-o serie de bloguri în curs de desfășurare scrisă de Adam Gordon. În fiecare săptămână, Adam vă va ghida printr-o comandă PowerShell, arătându-vă când și cum să o folosiți pe fiecare. În această săptămână, Adam se referă la Where-Object.
Când să folosiți Where-Object
Ccmdlet-ul Where-Object selectează obiecte care au anumite valori ale proprietăților din colecția de obiecte care îi sunt transmise.
Începând cu Windows PowerShell 3.0, există două moduri diferite de a construi o comandă Where-Object.
- Bloc script. Puteți utiliza un bloc de script pentru a specifica numele proprietății, un operator de comparație și valoarea proprietății. Where-Object returnează toate obiectele pentru care instrucțiunea blocului de script este adevărată.
- Instrucțiune de comparare. De asemenea, puteți scrie o instrucțiune de comparare, care seamănă mult mai mult cu limbajul natural.
Cum se utilizează Where-Object
Obțineți serviciile oprite:
(1st) Get-Service | Where-Object {$_.Status -eq „Stopped”}
(2nd) Get-Service | where Status -eq „Stopped”
Aceste comenzi obțin o listă a tuturor serviciilor care sunt în prezent oprite.
Variabila automată $_ reprezintă fiecare obiect care este transmis cmdletului Where-Object.
Comanda (1) folosește formatul de bloc de script, iar comanda (2) folosește formatul de declarație de comparare.
Obțineți procesele pe baza setului de lucru:
Get-Process | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)
Aceste comenzi listează procesele care au un set de lucru mai mare de 25.000 kilobiți (KB).
Pentru că valoarea proprietății WorkingSet este stocată în octeți, valoarea de 25.000 este înmulțită cu 1.024.
Sintaxa blocului de script și cea a instrucțiunii sunt echivalente și pot fi folosite interschimbabil.
Utilizați formatul instrucțiunii de comparație:
(1st) Get-Process | Where-Object -Property Handles -GE -Value 1000
(2nd) Get-Process | where Handles -GE 1000
Acest exemplu arată cum se utilizează noul format de declarație de comparare a cmdletului Where-Object.
Comanda (1st) utilizează formatul de declarație de comparare. În această comandă, nu se utilizează pseudonime și toți parametrii includ numele parametrului.
Comanda (2nd) este utilizarea mai naturală a formatului de comandă de comparare. Aliasul where este înlocuit cu numele cmdletului Where-Object și toate numele parametrilor opționali sunt omise.
Utilizați condiții multiple:
Get-Module -ListAvailable | where {($_.Name -nu este „Microsoft*” -și $_.Name -nu este „PS*”) -și $_.HelpInfoUri}
Comanda utilizează parametrul -ListAvailable al cmdletului Get-Module pentru a obține toate modulele de pe calculator.
Un operator pipeline (|) trimite modulele la cmdlet-ul Where-Object, care obține modulele ale căror nume nu încep cu Microsoft sau PS și care au o valoare pentru proprietatea HelpInfoURI, care îi spune lui PowerShell unde să găsească fișiere de ajutor actualizate pentru modul.
Declarațiile de comparare sunt conectate prin operatorul logic And.
Exemplul utilizează formatul de comandă al blocului de script.
NOTA: Operatorii logici, cum ar fi And și Or, sunt valabili numai în blocurile de script. Nu îi puteți utiliza în formatul de declarație de comparație al unei comenzi Where-Object.
Învățați comanda de săptămâna trecută: Get-WinEvent.
Aveți nevoie de instruire PowerShell? Consultați cursurile online de formare IT PowerShell de la ITProTV.
.