Powershell
ile Windows üzerinde birçok işlemi daha kolay ve daha kısa sürede yapabilmek
mümkündür. Microsoft, PowerShell'i
"görev tabanlı .NET Framework üzerine inşa edilmiş komut satırı shell'i ve
komut dizesi olarak tanımlıyor.
Powershell'in
avantajlarını ise aşağıdaki maddeler ile özetlemek mümkündür.
- Powershell hem command-line olarak hemde bir scripting language olarak çalışmaktadır.
- Powershell baş döndürücü sayıda teknolojiyle etkileşim kurabilir.(.NET Framework, the Registry, COM, WMI, ADSI. Exchange, Sharepoint, Systems Center, Hyper-V, SQL. VMware vCenter, Cisco UCS, Citrix XenApp and XenDesktop. REST APIs, XML, CSV, JSON ...)
- Powershell nesne tabanlıdır.(Object-Oriented)
Bilgisayarımızda
ya da sunucumuzda zaman zaman yüklediğimiz programlar ve patchler sonucunda
restart işlemi gerekebilir ve bu restart işlemi gerekip gerekmediğini tespit
etmek için Powersehell kullanılabilir.
Aynı anda 100 sunucuda bunu öğrenmek gerektiğinde ise Powershell çok
yerinde ve efektif bir çözüm olacaktır.
Aşağıdaki
script ile restart kontrolünü gerçekleştirebiliriz.
Test-PendingReboot:
|
Windows
Registry'den Reboot gerekip gerekmediği bilgisini alan fonksiyondur.Boolean
değerinden bi sonuç döndürmektedir.
|
DecideIf:
|
Test-PendingReboot
fonksiyonundan dönen true yada false değerine göre sonucu kullanıcıya ileten
fonksiyondur.
|
function
Test-PendingReboot
{
if (Get-ChildItem
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based
Servicing\RebootPending" -EA Ignore) { return $true }
if (Get-Item
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto
Update\RebootRequired" -EA Ignore) { return $true }
if (Get-ItemProperty
"HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name
PendingFileRenameOperations -EA Ignore) { return $true }
try {
$util =
[wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities"
$status = $util.DetermineIfRebootPending()
if(($status -ne $null) -and
$status.RebootPending){
return $true
}
}catch{}
return $false
}
Function
DecideIf()
{
if(Test-PendingReboot)
{
Write-Host
Bilgisayarınızın Restart Edilmesi Gerekiyor.
}
else
{
Write-Host
Bilgisayarınızın Restart Edilmesi Gerekmiyor.
}
}
Yorumlar
Yorum Gönder