Sıradan kullanıcılar kırk yılda bir KOmut istemi (Cmd) yi kullanır lakin çoğu Windows PowerShell in ismini bile duymamış olabilir , daha önceki yazılarımızda Powershell hakkında makalelerimiz olmuştu
kısaca hatırlarsak ; Windows üzerinde daha fazla kontrol ve otomasyon sağlamak amacı ile Microsoft tarafından oluşturulmuş olan bir yönetim çerçevesi/yapısıdır (Framework) , bir bir komut satırı kabuğu (command-line shell) ve .NET Framework üzerine kurulu bir script dilinden oluşur. tek bir bilgisayarda veya ağda Birçok admin görevini otomatikleştirmede kullanılır. gelelim asıl konumuza , Powershellde yetki sorunları yaşamamak için yapılması gerekenlere
1. Powershell i herzaman Yönetici olarak çalıştıralım
Windoslarda arama kutusuna "Powershell" yazıp çıkan linke sağ tıklayıp Admin olarak çalıştır diyerek Powershelli çalıştırabiliriz.
Burada admin yetkilerinde çalıştırmamız önemli çünkü normal olarak çalıştırdığımızda bazı komutlarda yetki sorunu yaşarız.
2. Scriptlerdeki Engellemeyi kaldırmayı unutmayalım
İnternetten indirilen veya başka bir bilgisayarda oluşturulmuş olan Powershell scriptlerini çalıştırmadan önce mutlaka sağ tıklayıp özellikler deyip eğer varsa "engellemeyi kaldır" dememiz gerekir.
Çoğu defa ben dahil birçok kişi üstteki basit işaretlemeyi yapmadığından Powershell komutu veya scripti neden hata verdi diye kafa yormaktadır.
3. Powershell scriptlerini çalışır hale getirelim (ExecutionPolicy ayarları)
Varsayılan olarak powershell ayarları herhangi bir Powershell scriptini çalıştırmaya müsade etmez ve bu durum çoğu zaman powershell kullanıcılarını rahatsız eder , ExecutionPolicy - hangi tip PowerShell scriptlerinin sistemde çalışmasına müsade edileceğini düzenleyen ayarlardır varsayılan olarak bu ayar "Restricted" konumundadır yani hiçbir script çalışamaz , Powershell i çalıştırıp aşağıdaki komutlardan birini verdiğimizde
Get-ExecutionPolicy
yada
Get-ExecutionPolicy -List | Format-Table -AutoSize
yada
Get-ExecutionPolicy -List
muhtemelen sizdeki tabloda aşağıdaki ile benzer veya aynı çıkacaktır. (Sizde bazıları veya hepsi Restricted te olabilir.
Bu durumda scriptlerin çalıştırılmasında sıkıntılar yaşanacaktır mesela alınan hatalardan en meşhuru "File... cannot be loaded. The file is not digitally signed. The script will not be executed on the system." hatasıdır bunun anlamı scriptin güvenilmez olduğu için sisteminizde çalışmasına müsade edilmediğidir.
Kısıtlamaları kaldırıp Scriptleri çalışır hale getirmek için tek tek aşağıdaki komutları verelim
Set-ExecutionPolicy Unrestricted Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope UserPolicy Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted Set-ExecutionPolicy -Scope:CurrentUser -ExecutionPolicy:Unrestricted
yada
Set-ExecutionPolicy Unrestricted -Scope LocalMachine -Force Set-ExecutionPolicy Unrestricted -Scope UserPolicy -Force Set-ExecutionPolicy Unrestricted -Scope Process -Force Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Eğer kodları uygularken hata verirse aşağıdakini uygulayın:
1. Windows ve R tuşlarına basalım ve çalıştıra aşağıdakini yazalım
gpedit.msc
Yerel grup ilkesi düzenleyicisi açılacaktır , burada : Yönetim şablonları > Windows bileşenleri > Windows Powershell Kısmına gidelim ve sağ taraftaki "Turn on script execution" kısmına çift tıklayalım
Açılan pencerede Etkin kısmını işaretleyelim ve aşağı açılır menüden "Allow All scripts" kısmını seçelim , dip kısımdaki uygula ve tamam butonları ile işlemi sonlandıralım.
Her windowsta üstteki yerde Powershell olmayabiliyor (Lütfen bu konuda Microsofta danışın) neticede aşağıdaki gibi bir tablo elde edeceksiniz bu hertür kısıtlamanın kaldırıldığı anlamına gelmektedir
Gpedit.msc (yerl grup ilkesi düzenleyicisi) bulunmayan sistemlerde aşağıdaki registry değerleri yardımcı olabilir
Windows 7 de aşağıdaki işe yaramıştı
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell] "EnableScripts"=dword:00000001 "ExecutionPolicy"="Bypass"
Windows 8 ve sonrası için aşağıdaki anahtarlara bakınız
HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell HKLM\software\Wow6432Node\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy
üstteki yerde sağ tarafta ExecutionPolicy isminde bir REG_SZ anahtarı oluşturup değer olarak Unrestricted giriniz.
Sonrasında Powershell ile çalışırken yetkilendirme ile ilgili herhangi bir hata uyarısı almayacaksınız.
Bu powershell in uğraştıran tarafı işte bu yetkiler , varsayılan olarak herkeste yetkisiz olarak geliyor , Yetki alamama durumlarında birçok komut hata veriyor.
olabilir bir gariplik var. bu arada ilgilendiğin içinde çok teşekkürler.
ilginç bir durum ben makaleleri uygulayıp yazıyorum , üsttekindede verdiğim komutları yazdım , acaba microsoft Powershell sürümünde değişikliğe gidince komutları da mı değiştirdi bilemiyorum
denedim hocam malesef ondada olmuyor,windows 7-windows8-windows8.1 hepsinde deneme yaptım sonuç aynı olmuyor.hata veren kodda şu Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope UserPolicy .bu kodu yapıştırıp entera bastığım zaman kırmızı yazılar çıkıyor yani hata veriyor. hocam sen yukardaki resimdeki gibi hepsini nasıl Unrestricted yaptım anlamış değilim valla 🙂
Powershell i birde PowerRun üzerinden çalıştırıp aynı komutları dene bakalım
Web Link ...
sorun çıkarıyor bazı powershell scriptlerini çalıştırırken kırmızı renkte hatalı çalışıyor yani geçersiz çalışıyor bazı scriptler.neyse bu sorunu mecburen bir şekilde çözmeye çalışacağım.
ilginç bir durum , bir yetkisizlik sıkıntısı çıkarmıyorsa o şekilde kullan derim
selam, yine ben 🙂 hocam yukarda anlatılanlara birebir yaptım ama MachinePolicy ve UserPolicy deki kısıtlamayı bir türlü kaldıramıyorum. resim yükledim bakarmısın Web Link ...
sende sağolasın ismail
Çok teşekkürler.