İşlem hattından nesneleri kaldırma
PowerShell'de genellikle bir işlem hattına istediğinizden daha fazla nesne oluşturur ve geçirirsiniz. Cmdlet'leri kullanarak Format-*
görüntülenecek belirli nesnelerin özelliklerini belirtebilirsiniz, ancak bu, nesnelerin tamamını ekrandan kaldırma sorununa yardımcı olmaz. bir işlem hattının sonundan önce nesneleri filtrelemek isteyebilirsiniz, böylece ilk oluşturulan nesnelerin yalnızca bir alt kümesinde eylemler gerçekleştirebilirsiniz.
PowerShell, işlem hattındaki her nesneyi test etmenizi ve yalnızca belirli bir Where-Object
test koşulunu karşılıyorsa işlem hattı boyunca geçirmenizi sağlayan bir cmdlet içerir. Testi geçmeyen nesneler işlem hattından kaldırılır. Test koşulunu FilterScript parametresinin değeri olarak sağlarsınız.
Where-Object ile basit testler gerçekleştirme
FilterScript değeri, true veya false olarak değerlendirilen, küme ayraçları ({}
) ile çevrelenmiş bir veya daha fazla PowerShell komutu olan bir betik bloğudur. Bu betik blokları basit olabilir, ancak bunları oluşturmak için başka bir PowerShell kavramı olan karşılaştırma işleçleri hakkında bilgi edinmeniz gerekir. Karşılaştırma işleci, her tarafında görünen öğeleri karşılaştırır. Karşılaştırma işleçleri kısa çizgi karakteriyle (-
) başlar ve ardından bir ad eklenir. Temel karşılaştırma işleçleri neredeyse her tür nesne üzerinde çalışır. Daha gelişmiş karşılaştırma işleçleri yalnızca metin veya diziler üzerinde çalışabilir.
Not
Varsayılan olarak, PowerShell karşılaştırma işleçleri büyük/küçük harfe duyarlı değildir.
Ayrıştırma konusunda dikkat edilmesi gerekenler nedeniyle, =
ve gibi <
>
simgeler karşılaştırma işleçleri olarak kullanılmaz. Bunun yerine, karşılaştırma işleçleri harflerden oluşur. Temel karşılaştırma işleçleri aşağıdaki tabloda listelenmiştir.
Karşılaştırma İşleci | Anlamı | Örnek (true döndürür) |
---|---|---|
-Eq | şuna eşittir: | 1 -eq 1 |
-ne | eşit değil | 1 -ne 2 |
-Teğmen | Küçüktür | 1 -lt 2 |
-Le | Küçüktür veya eşittir | 1 -le 2 |
-Gt | Büyüktür | 2 -gt 1 |
-Ge | Büyüktür veya eşittir | 2 -ge 1 |
-Gibi | Gibi (metin için joker karakter karşılaştırması) | "file.doc" -like "f*.do?" |
-notlike | gibi değil (metin için joker karakter karşılaştırması) | "file.doc" -notlike "p*.doc" |
-Içerir | Contains | 1,2,3 -contains 1 |
-notcontains | içermez | 1,2,3 -notcontains 4 |
Where-Object
betik blokları, işlem hattındaki geçerli nesneye başvurmak için özel değişkeni $_
kullanır. Nasıl çalıştığını gösteren bir örnek aşağıda verilmiştir. Bir sayı listeniz varsa ve yalnızca 3'ten küçük olanları döndürmek istiyorsanız, şunu yazarak sayıları filtrelemek için kullanabilirsiniz Where-Object
:
1,2,3,4 | Where-Object {$_ -lt 3}
1
2
Nesne özelliklerine göre filtreleme
Geçerli işlem hattı nesnesine başvurduğundan $_
, testlerimizin özelliklerine erişebiliriz.
Örnek olarak WMI'deki Win32_SystemDriver sınıfına bakabiliriz. Belirli bir sistemde yüzlerce sistem sürücüsü olabilir, ancak çalışan sürücüler gibi yalnızca belirli bir sistem sürücüsü kümesiyle ilgileniyor olabilirsiniz. Win32_SystemDriver sınıfı için ilgili özellik State'tir. Şunu yazarak yalnızca çalışan sürücüleri seçerek sistem sürücülerini filtreleyebilirsiniz:
Get-CimInstance -Class Win32_SystemDriver |
Where-Object {$_.State -eq 'Running'}
Bu, hala uzun bir liste oluşturur. StartMode değerini de test ederek yalnızca otomatik olarak başlayacak şekilde ayarlanan sürücüleri seçmek için filtre uygulamak isteyebilirsiniz:
Get-CimInstance -Class Win32_SystemDriver |
Where-Object {$_.State -eq "Running"} |
Where-Object {$_.StartMode -eq "Auto"}
DisplayName : RAS Asynchronous Media Driver
Name : AsyncMac
State : Running
Status : OK
Started : True
DisplayName : Audio Stub Driver
Name : audstub
State : Running
Status : OK
Started : True
...
Bu, sürücülerin çalıştığını bildiğimiz için artık ihtiyacımız olmayan birçok bilgi sağlar. Aslında, bu noktada ihtiyacımız olan tek bilgi ad ve görünen addır. Aşağıdaki komut yalnızca bu iki özelliği içerir ve çok daha basit bir çıkış elde edilir:
Get-CimInstance -Class Win32_SystemDriver |
Where-Object {$_.State -eq "Running"} |
Where-Object {$_.StartMode -eq "Manual"} |
Format-Table -Property Name,DisplayName
Name DisplayName
---- -----------
AsyncMac RAS Asynchronous Media Driver
bindflt Windows Bind Filter Driver
bowser Browser
CompositeBus Composite Bus Enumerator Driver
condrv Console Driver
HdAudAddService Microsoft 1.1 UAA Function Driver for High Definition Audio Service
HDAudBus Microsoft UAA Bus Driver for High Definition Audio
HidUsb Microsoft HID Class Driver
HTTP HTTP Service
igfx igfx
IntcDAud Intel(R) Display Audio
intelppm Intel Processor Driver
...
Yukarıdaki komutta iki Where-Object
öğe vardır, ancak bunlar mantıksal işleç kullanılarak -and
tek Where-Object
bir öğede ifade edilebilir, örneğin:
Get-CimInstance -Class Win32_SystemDriver |
Where-Object {($_.State -eq 'Running') -and ($_.StartMode -eq 'Manual')} |
Format-Table -Property Name,DisplayName
Standart mantıksal işleçler aşağıdaki tabloda listelenmiştir.
Mantıksal İşleç | Anlamı | Örnek (true döndürür) |
---|---|---|
-and |
Mantıksal ve; her iki taraf da doğruysa true | (1 -eq 1) -and (2 -eq 2) |
-or |
Mantıksal veya; her iki taraf da true ise true | (1 -eq 1) -or (1 -eq 2) |
-not |
Mantıksal değil; true ve false değerlerini tersine çevirir | -not (1 -eq 2) |
! |
Mantıksal değil; true ve false değerlerini tersine çevirir | !(1 -eq 2) |
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin