Windows 11 ya da winget uygulaması kurulu Windows 10 işletim sisteminde aşağıdaki komut ile powershell uygulmasını güncelleyebilirsiniz.
winget install microsoft.powershell
Windows 11 ya da winget uygulaması kurulu Windows 10 işletim sisteminde aşağıdaki komut ile powershell uygulmasını güncelleyebilirsiniz.
winget install microsoft.powershell
Powershell gibi güçlü bir araç ile XML dosyalarında yer alan verileri rahatlıkla okuyabilir ve ayrıştırabilirsiniz.
XML biçimindeki dosyalardan powershell ile veri çekmek oldukça kolay fakat birkaç önemli püf noktasını bilmek gerekmektedir.
İlk olarak XML dosyamızı aşağıdaki komut ile bir değişkene atıyoruz.
[xml]$Xmlsunucu= Get-Content -Path ‘C:\sunucular\dc.xml’
Dosyamızın mutlaka XML uzantısı olmasına gerek yoktur. XML uyumlu farklı uzantılı bir dosya hatta yapılandırma dosyaları (config) da olabilmektedir.
Sıra işin püf noktasına geliyor.
XML dosyasında yer alan satırlardaki başlık kısımlarını kullanarak verileri çekmeniz gerekmektedir.
<config>
TEST
</config>
Yukardaki örnekte yer alan bir satırdan veri çekmek için şu komut verilmelidir:
$xml.config
Benim kullandığım XML dosyası;
<Sunucular>
<DC>
<Name>DC1</Name>
<Ip>10.0.0.1</Ip>
</DC>
<DC>
<Name>DC2</Name>
<Ip>10.0.0.2</Ip>
</DC>
<DC>
<Name>DC3</Name>
<Ip>10.0.0.3</Ip>
</DC>
</Sunucular>
Sunucular ve DC olarak iki başlık olduğundan aşağıdaki komutu veriyorum:
$xmlsunucu.sunucular.dc
XML dosyasında yer alan ve verileri çekmek istediğiniz başlıkları komutta sıra ile belirtmeniz gerekmektedir.
En son komutu geliştirip özelleştirme de yapabilirsiniz.
$xmlsunucu.sunucular.dc | where-object {$_.name -eq ‘DC1’}
Public IP adresiniz ve lokasyon bilgisiniz çekmek için aşağıdaki komutu kullanabilirsiniz.
Invoke-RestMethod -Uri ‘ipinfo.io/json’
Farklı bir IP adresi hakkında bilgi almak için de kullanılabilir.
Invoke-RestMethod -Uri ‘http://ipinfo.io/Ipadresi/json’
Bilgisayarınızdaki hangi uygulamanın hangi port üzerinden internete eriştiğini öğrenmek için aşağıdaki scripti kullanılabilirsiniz. Örnekteki script için 443 portu kullanılmıştır. Farklı bir port girebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$Process = @{ Name='Process' Expression={ (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Path } } $IpOwner = @{ Name='RemoteAuthority' Expression={ $ip = $_.RemoteAddress $info = Invoke-RestMethod -Uri "http://ipinfo.io/$ip/json" '{0} ({1})' -f $info.Org, $info.City } } Get-NetTCPConnection -RemotePort 443 -State Established | Where-Object RemoteAddress | Select-Object -Property $IPOwner, RemoteAddress, OwningProcess, $Process |
Active Directory , Exchange , Skype vb sunucularda yer alan Powershell yönetim aracı ayrı bir modüle olarak çalıştırılmaktadır. Bu sunucularda ya da herhangi bir Windows server veya istemci üzerinden açtığınız Windows powershell aracı ile bu tür sunucuları yönetmek istediğinizde gerekli modülleri yüklemeniz gerekmektedir.
Module yükleme işlemi her powershell aracını açtığınızda tekrar yapmanız gereken bir işlemdir.
Sıklıkla aynı modülleri kullandığınız bir bilgisayarda kullandığınız tüm modüllerin Windows powershell aracına otomatik yüklenmesini sağlayabilirsiniz.
Kendi kullanıcınız ile oturum açtığınız Windows işletim sisteminde “Documents” klasörü içerisinde “WindowsPowershell” klasörü açıyoruz.
İçerisine “Module” klasörü açıyoruz.
Hemen altına profile.ps1 dosyası oluşturuyoruz.
Profile dosyasına sıklıkla kullandığınız modullerin yükleme komutlarını yazabilirsiniz.
Exchange :
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
Active Directory:
Import-Module activedirectory
Bu işlemin ardından Windows powershell ya da Windows powershell ISE yi açarsanız açılış sırasında modüllerin yüklendiğini görebilirsiniz.
Sunucu ve istemcilerde yer alan powershell aracı ile rahatlıkla yönetim yapabiliyoruz.
Uzaktan yönetim de sağlayan powershell aracı Windows işletim sistemi dışında da yönetim yapabilmek için Powershell Web Access rolüne ihtiyaç duyuyor.
PWA rolü web ara yüzünde powershell aracını çalıştırmamızı ve sunuculara ya da istemcilere bağlanıp yönetim yapabilmemizi sağlıyor. Bu sayede mobile cihazlardan da yönetim sağlanabiliyor.
Desteklenen tarayıcılar:
Mobile tarayıcılar:
PWA rolü Windows Server 2012, Windows Server 2012 R2 ve Windows Server 2016 sunucularına kurulabiliyor. Bu sunuculara rolü kurup sertifika ayarı yaptıktan sonra hangi kullanıcı ya da kullanıcıların hangi sunucu ya da sunuculara bağlanabileceğini belirliyoruz.
Powershell aracını kullanarak Active Directory yapınızda kaç adet kullanıcınız var, bu kullanıcıların kaçı aktif durumda kaçı pasif durumda ve hangi OU nun altında kaç kullanıcı var gibi bilgileri rahatlıkla görebilirsiniz.
Toplam kullanıcı sayısı:
(get-aduser –filter ).count
Aktif kullanıcı sayısı:
(get-aduser -filter *|where {$_.enabled -eq “True”}).count
Aktif olmayan kullanıcı sayısı:
(get-aduser -filter *|where {$_.enabled -eq “False”}).count
Belirli bir OU altındaki kullanıcı sayısı:
(Get-ADUser -Filter * -SearchBase “ou=ankara,dc=ortacdemirel,dc=com”).count
Powershell komutları ile temel seviyede bilgisayarınızdan ağ yapılandırılması ve kullanımı hakkında bilgi alabilirsiniz.
Temel seviyede bilgi çekebileceğiniz komutlar çok kullandığımız ipconfig, netsh, nslookup gibi komutların yerine geçmektedir.
IP adresi yapılandırılmasını görmek için (ipconfig yerine)
Get-NetIPConfiguration
Tüm ağ kartlarını listemek için:
Get-NetAdapter
Exchange anti-spam ajanı tarafından kayıt altına alınan hareketler sunucularda “AgentLog” klasörü altında tutulur.
Bu hareketler dışardan gelen emaillerin alıcılarını, mesajın ne zaman ulaştığını ve spam olarak algılanıp algılanmadığını gösterir.
Kayıtlar bir haftalık tutulur ve daha sonrasında üzerine yazılarak süreç devam eder.
Powershell yardımı ile ağınızda kullanılan IP adreslerini öğrenebilir ve erişebilirdik durumlarını test edebilirsiniz.
Bu işlemler için birçok 3.party yazılım ya da script kullanabileceğiniz gibi aşağıdaki basit komutlar ile de işinizi görebilirsiniz.
İki örnek komut göstereceğim.
Bunlardan ilki belirlediğiniz aralıkta (1..254 gibi) yer alan IP adreslerine tek tek ping atarak dönen sonuçları görüntüler.
1..254 | %{ping -n 1 -w 15 192.168.1.$_ | select-string "reply from"}
İkinci komut ise ping işlemi sonucunda başarılı olan IP adreslerini listeler.
1..255 | foreach-object { (new-object system.net.networkinformation.ping).Send("192.168.1.$_") } | where-object {$_.Status -eq "Success"} | select Address
İkinci komutu çok farklı şekillerde geliştirebilirsiniz.
NOT: Her iki komutu da denerken IP adreslerini kendi ağınıza göre yapılandırmayı unutmayınız.
Powershell, Microsoftun 2008 server ile birlikte kullanıma sunduğu güçlü bir komut satırı aracıdır. Tamamiyle wmi script ile uyumlu çalışabilmekte ve eskiden satırlarca yazdığımız kodları tek satıra indirgeyebilen oldukça güçlü bir araçtır.
Active Directory ile çok başarılı bir entegrasyonu bulunmaktadır PowerShell in. Powershell komutları ile active directory nesneleri rahatlıkla yönetilebilirken yüzlerce hatta binlerce kullanıcılı ortamlarda sistem adminlerinin tek satırlık komut ile tüm active directory kullanıcı ayarlarına hükmetmesini sağlamaktadır.