Category Archives: PowerShell

Powershell ile Pil Bilgisini Çekme

Aşağıdaki powershell betiği ile taşınabilir bilgisayarınızın pil kapasitesi hakkında bilgi alabilirsiniz. Pilin aşınma bilgisini ve pil değiştirme zamanı gibi bilgiler edinilebilir.

$designCap = Get-WmiObject -Class “BatteryStaticData” -Namespace “ROOT\WMI” |
Group-Object -Property InstanceName -AsHashTable -AsString
Get-CimInstance -Class “BatteryFullChargedCapacity” -Namespace “ROOT\WMI” |
Select-Object -Property InstanceName, FullChargedCapacity, DesignedCapacity, Percent |
ForEach-Object {
$_.DesignedCapacity = $designCap[$_.InstanceName].DesignedCapacity
$_.Percent = [Math]::Round( ( $_.FullChargedCapacity*100/$_.DesignedCapacity),2)
$_ }

XML Biçimindeki Dosyaların Powershell ile Okunması

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’}  

Powershell ile Public IP Adresleri Hakkında Bilgi Toplamak

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.

Powershell Modullerinin Otomatik Yüklenmesi

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.

PowerShell Web Access

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:

  • Windows® Internet Explorer® for Microsoft Windows® 8.0, 9.0, 10.0, and 11.0
  • Mozilla Firefox® 10.0.2
  • Google Chrome™ 17.0.963.56m for Windows
  • Apple Safari® 5.1.2 for Windows
  • Apple Safari 5.1.2 for Mac OS®

 

Mobile tarayıcılar:

  • Windows Phone 7 and 7.5
  • Google Android WebKit 3.1 Browser Android 2.2.1 (Kernel 2.6)
  • Apple Safari for iPhone operating system 5.0.1
  • Apple Safari for iPad 2 operating system 5.0.1

 

 

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.

Active Directory de Powershell ile Kullanıcı Sayılarını Görme

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 ile Ağ Yönetimi

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 Agent Log Script

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.

Ağda Kullanılan Ip Adreslerini Bulma

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.