ÇIKTILAR (FORMATLAR)
Tek Pipe kullanılan sorgular
Get-process –name svchost
Get-process gibi
Sorgular çalıştırabiliyorum.Pipe kullanarak sorgularımı istediğim şekildede alabilirim.
Get-Process | select name,handles Komutunu çalıştırdığımda bana çalışan processlerin sadece isim ve Handles ları listeleyecektir.
Get-Process | Sort-Object handles Komutunu kullandığımda çıktı olarak çalışan processlerin hepsini verecektir,fakat handles göre sıralayarak verecektir.
Get-Process | Sort-Object handles –Descending Komutunu kullandığımda yine çıktı olarak çalışan processleri verecektir.Sıralı olacaktır fakat azalan sıraya göre listeleyecektir.
Birden Fazla Pipe Kullanılarak Çalıştırılan Sorgular
Get-Process | select name,handles,id | Sort-Object ID
Çıktı olarak name-handles-id göre sonuçları dönderecek bu sonuçlarıda Processlerin ID lerine göre sıralayarak değerleri dönderecektir.
Get-Process | Sort-Object handles -Descending | Select-Object -First 20
Çıktı olarak bütün prosesleri verecektir.ikinci pipe dan sonra handles a göre azalan bir sıra halinde değer döndürürken,üçüncü pipe da seçilen ilk 20 kayıtı dönderecektir.
Get-Process | Sort-Object handles,id | Select-Object -First 30 | Group-Object Company
Yukarıdaki Komutta ilk gelen komut sonunda bütün processler listelenecek,ikinci pipe dan sonra ise handles ve id göre sıralı olarak gelen processler,üçüncü pipe da sadece ilk 30 tane olan processler listelenecekler,son pipe da ise çalışan process ler gruplanacak ve bu gruplar Company e göre gruplara ayrılacaktır.Buna göre bilgisayarda çalışan processlerin neler olduğunu görebilir.Zararlı yada istemediğimiz Processleri Kill yada Stop Edebiliriz.
Process leri Start-Stop ve Kill Etmek
Stop-Process
Start-Process
Öncelikle bir uygulama process başlatmak için kullanacağımız komut.
Start-Process notepad
İle notepad uygulamasını başlatabiliriz.
Çalışan processleri nasıl stop ederim peki
Stop-Process –Processname notepad
İle Notepad Uygulamasını da sonlandırabiliriz.
Sorgulamalar---
Öncelikle bir uygulama process başlatalım
Start-Process notepad
İle notepad uygulamamı başlattım arkasından hemen
Get-Process | Where-Object {$_.Name -eq "Notepad"}
İle bir sorgulama yaptırdık ve karşılığında bana döndüreceği sonuç şu şekilde olacaktır.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
71 9 2236 8092 5044 notepad
Şeklinde değer döndürecektir.
Eğerki ben çalışan processleri listelemek istemiyorum sadece var ise sonlandır demek istiyorum.
O zaman kullanacağım komut aşağıdaki gibi olacaktır.
Get-Process | Where-Object {$_.Name -eq "Notepad"} | KILL
Yukarıdaki komut eğer sorguladığım process çalışıyor ise o processi sonlandıracaktır.
Birden fazla çalışan aynı processler var ise hepsini aynı anda kill edecektir.Processleri sonlandıracaktır.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
82 19 6808 14428 99 0,12 2016 calc
82 19 6804 14476 95 0,14 2740 calc
82 19 6780 14340 95 0,17 5432 calc
82 19 6804 14404 95 0,14 5748 calc
Şeklinde birden fazla çalışan processlerim mevcut bunların hepsini durdurmak istiyorum mantıklı olan nedir ProcessName aynı olduğundan ProcessName e göre sorgulama yaptırıp kill edebilirim . Fakat şöyle bir durumda olabilir isteyebiliriz ki workstation ı 0,15 den küçük olanların hepsini kill et diyebiliriz.
O zaman sorgumda ona göre değişkenlik gösterecektir.
WorkingSet e göre sorgulama yapmam gerekecekti.
PS D:\> Get-Process s* | Where-Object {$_.WorkinkSet -lt "10000"}
Şeklinde…
Peki Şimdiye kadar hep processler ler üzerinden işlemleri gerçekleştirdik.
Birde Service Nesnesi üzerinden işlemlerimizi gerçekleştirelim.
Get-Service b*
Şeklinde Sorguladığımda bana döndereceği değer B ile başlayan bütün Service leri listelemek olacaktır.
Peki kriter ekleyerek sorgulama yapalım yani B ile başlayan Sorgulardan sadece şu anda çalışan aktif service leri listelesin…
D:\> Get-Service -Name b* | Where-Object{$_.Status -eq "Running"}
Status Name DisplayName
Running BFE Base Filtering Engine
Running Bonjour Service Bonjour Service
Running Browser Computer Browser
Running bthserv Bluetooth Support Srv.
Şeklinde bana değer dönderecektir.
Birde Kısıtlı kullanıcılarda admin hakları ile mmc konsoluna erişmek yada değişiklikler yapmak için kullanabileceğim komutlar.
[System.Diagnostics.Process]::Start("mmc","services.msc")
Şeklinde komutu döndürdüğümde bizlere vereceği sonuç service.msc konsolunu açmak olacaktır.Peki Kısıtlı kullanıcıda bu çalışacakmıdır hayır.
Çalıştırabilmek için
Password: ********
Yukarıda $pwd değişkeni oluşturup ona password değerini atadım.
“Password” yazan yerin bir önemi yok oraya istediğimiz bir veri girebiliriz.Örneğin
$pwd=Read-Host -Prompt "Yenal" –AsSecureString
Yenal: ********
Yukarıda görüldüğü gibi sadece title olarak görev yapmaktadır.
$dmn="localhost"
Yukarıdaki $dmn diye oluşturduğum değişkene de localhost tanımlaması atadık. Tabii burada active directory ortamında çalışıyor isek var olan domain name yazacaktık.Örneğin
$dmn="NetworkAcademy.local"
Şeklinde.
[System.Diagnostics.Process]::Start("mmc","Services.msc","Administrator",$pwd,$dmn)
Yukarıdaki komut satırında da kısıtlı kullanıcıda services.msc konsolunu açabilmiş olacağız.
Bu komutta normal windows komut satırında standart olanında bulunan Run as komutuna karşılık gelmektedir.
[System.Diagnostics.Process]::Start("mmc","Compmgmt.msc","Administrator",$pwd,$dmn)
Sadece service.msc değil bütün mmc ağacında bulunan yönetimsel araçları kullanabilmekteyiz.
Hemen burada remote makinada peki bu servisleri nasıl görürüm nasıl,stop ederim,nasıl start ederim soruları gelmiş olabilir birazda onlara örnek verelim.
Kopyalama,Taşıma,Silme,Reading,Writing
Get-Command -Noun item
Komutu ile Item komutlarını listeleyerek neleri kullanabiliyoruz sorguluyoruz.
Clear-Item
Copy-Item
Get-Item
Invoke-Item
Move-Item
New-Item
Remove-Item
Rename-Item
Set-Item
Yukarıda görüldüğü gibi listeden gerekeni kullanabilmekteyim.
$items=dir
$items
$items değişkenine dir değerini olduğu gibi aktardık.
$ $items=dir
$items[0] ile dir içerisinde bulunan array halinde yani dizi halinde bizlere değer döndürmektedir.
$items[-1] komutu ile sondan birinci olan değeri bize dönderir.
$items[1] | select *
İle o dosya hakkında verilere ulaşabilmekteyiz.
Txt Dosyasından Verileri okumak
Get-Content D:\yenal.txt
Şeklinde kullandığımda txt dosyasından verileri okuyabilmekteyim.
$a =”Merhaba”
$b=51
$c=”Dünya”
$a + ‘,’ + $b + ‘,’ + $c | out-file
Get-Process | select id,name,handles | Out-File
Dışarıya dosyayı almak için kullanırım.
Type D:\yenal.txt şeklindede txt dosyasından veri okurum.
Get-Process | select id,name,handles | Export-Csv D:\export.csv
Şeklinde verinin exportunu alabilirken aynı şekilde import diyerekde veriyi içeriye alabiliriz.