21 Nisan 2015 Salı

PowerShell Last Boot



Merhabalar , Şimdi yapacağımız script ile localde bulunan PC son logon zamanını tarih ayarları yapılarak ve daha sonrasında ComputerName zorunlu girmesi gerekecek şekilde değiştirerek adım adım yapıyor olacağız .

Öncelikle bu script için Wmi üzerinde bilgimizin olması gerekir , bunun için
http://www.powertheshell.com/reference/wmireference/root/cimv2/   adresini göz gezdirmeniz faydalı olacaktır . 


En taslak hali ile ; 

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,LastBootUpTime 

*** Win32_OperatingSystem Classımızından kullanılan PC üzerinde CSName ( PC İsmini ) ve , Son restart tarihini en taslak hali ile ( Resim-1 ) deki gibi verecektir . 

Resim-1


*** Şimdi Bu taslağımızı daha da derinleştirelim ; 
Select-Object -Property CSName,@{n=”RESTART”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}


Resim-2



(Resim-2) de belirildiği üzere ; Select-Object -Property CSName,@{n=”RESTART”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}} ile son restart edilen tarihi Gün/Ay/Yıl formatında çevirilmiştir . 

*** Script'imizin son hali ise Computer Name giriş zorunlu bırakacak şekilde parametre tanımlamamız olacaktır  . 

param (
[Parameter(Mandatory=$true)][string]$ComputerName
)
Get-WmiObject -Class Win32_OperatingSystem –ComputerName $ComputerName |
Select-Object -Property CSName,@{n=”Last Booted”;
e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}
(Resim-3) Çıktısı Alınmıştır . 

Resim-3



Teşekkür Ederim . 
gorkemkarayel@outlook.com

20 Nisan 2015 Pazartesi

PowerShell ile Dosya Transfer Nasıl Yapılır



Merhabalar , Domain içerisinde bir PC ye dosya transfer yapabilmemiz için kullanılması gereken PowerShell komutumuz ; 

Start-BitsTransfer


Konu ile ilgili örnek vermek gerekirse ; 

Start-BitsTransfer -Source C:\clientsourcedir\*.txt ` 
-Destination c:\clientdir\ -TransferType Download

Destination ( Hede ) ile dosyamızı kopyalayacağımız alan belirlenir .

-TransferType ( Upload , UploadReply , Download ) Seçeneği bulunmaktadır . 


Start-BitsTransfer http://Server01/serverdir/testfile1.txt C:\clientdir\testfile1.txt

Üstte verilen örnekte Http:\\ upload edilmiş ve tipi yükle olarak ayarlanmış olan
dosyaları belirtilen Path yükleyecektir .



Kaynak : https://msdn.microsoft.com/en-us/library/ee663885%28v=vs.85%29.aspx


18 Nisan 2015 Cumartesi

Wmi Object ile Driver Sorgulama



Merhabalar , bu yazımızda bilgisayarımızdaki driverlar hakkında bilgi almak için PowerShell yönetici modülümüze öncelikle manuel olarak kodumuzu yazarak sorgulama yapacağız ve daha sonra WMIExplorer kullanarak aynı sonuca erişmeye çalışacağız ;

Resim-1

(Resim-1) de görüldüğü gibi PowerShell arayüzümüze Get-WmiObject -Query " Select * From Win32_LogicalDisk Where DriveType='3'"

ile PC de bulunan driverlar hakkında bilgi alabiliriz . Şimdi aynı sorgu için WMIExplorer tool kullanarak ilerleyelim . Bu tool için ; https://wmie.codeplex.com/ linkini kullanabilirsiniz .

Tool içinde (.) olarak Local PC de Wmi bilgilerim Resim-2 deki gibi sıralanacaktır . Yapmamız gereken NameSpace ve Classes seçimi yaparak sorgumuzu Execute etmektedir .

Resim-2



PowerShell



PowerShell ile ilgili araştırmalarımın ve gerçekleştireceğim ufak Scriptingleri sizinle paylaşmak istiyorum . 

Öncelike PowerShell ,  Windows 7 ile default olarak sistemlerimizde bulunan daha öncesinde Kasım 2006 da ilk olarak Windows Vista işletim sisteminin bir parçası olarak planlanmıştır . Microsoft Exchange Server 2007 ile birlikte ilk olarak piyasaya sürülmüştür . PS1 XP , Server 2012 ve Vistaya free olarak download edilebilmektedir.Betiklerimizi oluşturduğumuz ve kısaca Microsoft tarafından Windows komut satırı ( Cmd.exe) ve Windows Script Host (WSH) alternatif olarak geliştirilen yeni nesil komut satırıdır . 




İlk bakışta basit bir komut satırı gibi duran "Powershell", aslında bundan çok daha fazlasıdır, hatta bir programlama dili derleyicisi yapısına sahiptir ve birçok programlama dilinde yapılabilecekleri bünyesinde barındırır. Bu sistem yöneticileri için büyük kolaylıklar sağlamıştır. Arayüzden yapabilecekler ve daha fazlası Powershell kullanılarak çok kısa sürede yapılabilir.



Powershell arayüzüne komutlar metin tabanlı olarak girilse de aslında arka planda nesne tabanlı bir yapıya sahiptir. Yani powershell metinleri işlemez,  .NET ortamına dayalı nesnelerle işlem yapar.
Powershell’de komutların çalışma mantığı .Net ile aynıdır. Tüm komutlar fiil-isim şeklinde bir kullanıma sunulur. Örneğin sistemdeki çalışan süreçleri görüntülemek için “Get-Process” komutu kullanılır.(Resim-2)

Resim-2

Resim-3


(Resim-3) ' de gösterilen komut ile Get-Host ile PC de bulunan PowerShell versiyonunu tespit edebilirsiniz . 

PowerShell , Cmd gibi çok sayıda komut içermektedir .  Bunların hepsini akılda tutmak imkansızdır . Bunun için tüm komutlarını sıralayarak en azından anımsatma açısından size Get-Command destek olacaktır . (Resim-4)



Resim-4


(Resim-4) de ekrana getirdiğim komutlar tabiki tümünü göstermemektedir . Daha da fazla olabileceğini tahmin etmişsinizdir . Bu Cmdlet lerin PC de default olarak yüklenenlerini daha kolay olarak ISE uygulamasını açarak uygulamanın sağ tarafında otomatik gelen komut listesinden de ulaşabilirsiniz . Aslında PowerShell'in ilk GUIsi olarak düşündüğüm ISE oldukça verimli çalışma ortamı sunmaktadır . (Resim-5) .PowerShell ISE Erişim için ; C:\Windows\System32\WindowsPowerShell\V1\PowerShellISE.exe den erişebilirsiniz . 
  

Resim-5

NOT: "get" komutları sadece veri çekebilen, "set" komutları veri işleyebilen komutlardır.

Powershel(Cmdlet)Powershell(alias) cmd.exeLinuxGörevi
 Set-Location cd,chdir cd,chdircd Dizin Değiştirir.
 Clear-Host cls, clear cls clear Ekranı Temizler.
 Copy-Item cpi, copy, cp copy, cp cp Dosya ve Dizin Kopyalar.
 Get-Help help, man help man  Yardım Görüntüler.
 Remove-Item
 ri, del, rmdir,
 rd, rm
 del, rmdir,
 rd
rm, rmdir Dosya ve Dizin Siler .
 Rename-Item rni, ren renmv
 Dosya ve Dizin Taşır,
 Adını Değiştirir.
 Get-Childitem gci, dir, ls dirls Dizin İçeriğini Görüntüler.
 Write-Output echo, write echoecho 
 Bir Yazıyı ya da Değişkenin
 Değerini Yazıdırır .
 Set-Variable sv, set setset Değişkene Değer Atar.
 Get-Content gc, type, cat typecat  Dosyaların İçeriğini  Görüntüler.


Alias (Takma Ad)
Powershell’ de kullanılan bazı komutları için farklı aliaslar (takma adlar) tanımlanmıştır. Örneğin silme işlemi için kullanılan "remove-item" komutunu kullanmak yerine "ri" komutunu kullanılabilir. Bunun gibi birçok takma ad tanımlanmıştır, sistemdeki tanımlı takma adların listesini görmek için yine "get-alias" komutu kullanılabilir.(Resim-6)


(Resim-6)




Daha sonraki yazımda Pipeline ve Scripting yapmaya başlıcaz . 


http://bidb.itu.edu.tr/seyirdefteri/blog/2013/09/07/powershell-ve-avantajlar%C4%B1
http://tr.wikipedia.org/wiki/Windows_PowerShell