Bazen Powershell scriptlerinin Admin yetkisinde çalıştırılmaları gerekmektedir yoksa erişim reddedildi hatası ile karşılaşırız bu mesela HKEY_CLASSES_ROOT registry kaydına yazdırmak istediğimizde
Üstteki resimde gördüğünüz üzere Powershell scriptini admin olarak çalıştırmadığımızdan dolayı anahtara erişim rededildi hatasını almaktayız , oysa scripti admin olarak çalıştırsak bu hatayı almayacaktık.
Powershell i Admin olarak çalıştırma yolları:
1. Powershell i sağ tıklayıp admin olarak çalıştıralım , eğer sizde aşağıdaki resimdeki gibi program menüsünde yoksa masasütüne atayacağınız bir kısayol u sağ tıklayıp admin olarak çalıştır da diyebilirsiniz
2. Aramaya Powershell yazıp açılan ekranda aşağıdaki komutu verebilirsiniz
Start-Process PowerShell -Verb RunAs
Gel gelelim bu üstteki her iki yöntemden sonra .Ps1 (powershell scripti) olan klasör veya dizine geçip scripti ancak o şekilde çalıştırabiliriz peki scriptiniz iç içe geçmiş onlarca dosyanın içerisinde ise üstteki şekilde admin olarak çalıştırılan Powershell bize pekte pratiklik sağlamayacaktır , Bir klasöre sağ tıkladığımızda Powershell i burada aç diye bir link çıksa nasıl olurdu ?
3. KLasöre sağ tıkladığımızda "Open PowerShell Here as Admin" (Powershell i burada Admin olarak çalıştır) çıksın
bunun için aşağıdaki registry kaydını kullanmamız yeterlidir:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\runas] @="Open PowerShell Here as Admin" "HasLUAShield"="" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoExit -NoProfile -Command \"Set-Location '%V'\"" [HKEY_CLASSES_ROOT\Directory\Background\shell\runas] @="Open Windows PowerShell Here as Administrator" "HasLUAShield"="" [HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command] @="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoExit -NoProfile -Command \"Set-Location '%V'\""
Default hale getirelim
Windows Registry Editor Version 5.00 [-HKEY_CLASSES_ROOT\Directory\shell\runas] [-HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
üstteki eklenti ile Powershell i scriptimizin bulunduğu klasöre sağ tıklayıp açabileceğimizden dizinler /klasörler arasında geçiş zahmetinden kurtulmuş oluyoruz ve aynı zamanda da Powershell Admin yetkilerinde çalışmış oluyor , bizede scripti çalıştırmak için sadece adını yazmak kalıyor , peki işi bir adım daha ileri götürsek yani scripti sağ tıkladığımızda Yönetici olarak çalıştır çıksa nasıl olur ?
4. Powershell scriptlerini sağ tıkladığımızda yönetici olarak çalıştır çıksın
Bunun için ise aşağıdaki registry kaydı yeterlidir
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\runas] [HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\runas\command] @="\"c:\\windows\\system32\\windowspowershell\\v1.0\\powershell.exe\" -noexit \"%1\""
Default hale getirelim
Windows Registry Editor Version 5.00 [-HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\runas]
Bu kayıtla herhangi bir scripte sağ tıklayıp yönetici olarak çalıştır dediğimizde hem dizinler arasında geçişlerden hem scripti çalıştırmak için adını yazmaktan hemde Powershell i yönetici olarak çalıştırmaktan kurtuluyoruz. Peki Powershell scriptlerini .bat veya .vbs kodları ile çalıştırabilirmiyiz diye soranlar olacaktır , evet çalıştırılabilir mesela "C:\Users\velociraptor\Documents" konumunda "test.ps1" diye bir Powershell scriptim olsun , scripti:
.bat kodları ile çalıştıralım
powershell.exe C:\Users\velociraptor\Documents\test.ps1
.vbs Kodları ile çalıştıralım
Set objShell = CreateObject("Wscript.shell") objShell.run("powershell -noexit -file C:\Users\velociraptor\Documents\test.ps1")
Görüldüğü üzere Powershell kolaylıklarından faydalanmak için diğer scriptlerle de powershell scriptlerini çalıştırabiliyoruz.
Velociraptor çalışmasıdır (Lütfen kaynak belirtmeden kullanmayınız)