Giriş
Bir PowerShell betiğini tam yönetici haklarıyla çalıştırmak, standart kullanıcı bağlamının yapamayacağı sistem düzeyindeki görevlerin kilidini açar. Korunan kayıt defteri kovanlarını düzenlemek, yazılımı tüm makine genelinde yüklemek veya güncellemek, hizmetleri yönetmek ya da güvenlik duvarı kurallarını yapılandırmak için yükseltmeye ihtiyaç duyabilirsiniz. Bu görevleri yükseltme olmadan denerseniz erişim reddedildi hataları veya kafanızı karıştırabilecek başarısızlıklar görürsünüz. Bu rehber, PowerShell’de bir betiği yönetici olarak çalıştırmayı güvenle tekrar edebileceğiniz pratik yöntemlere odaklanır.
Tek seferlik çalıştırmalar için hızlı GUI yöntemlerini, Start-Process ile komut satırından yükseltmeyi, sağlam kendi kendini yükselten betik kalıplarını ve Zamanlanmış Görev ile gözetimsiz çalıştırmayı öğreneceksiniz. Her bölüm bir sonrakine bağlanır; böylece anlık düzeltmelerden kurumsal düzeyde otomasyona kadar ihtiyaçlarınıza uygun iş akışını seçebilirsiniz. Ayrıca, güvenli ve yalnızca görev gerektiğinde yükseltme yapabilmeniz için sorun giderme ve güvenlik uygulamalarını da ele alacağız.

PowerShell’de ‘Yönetici olarak çalıştır’ Gerçekte Ne Anlama Gelir (UAC, yükseltme, güvenlik bağlamı)
Yükseltme, işleminizin kullandığı güvenlik belirtecini değiştirir. Windows bunu Kullanıcı Hesabı Denetimi (UAC) ile uygular. Hesabınız yerel Yöneticiler grubunun üyesi olsa bile, oturumunuz varsayılan olarak standart kullanıcı belirteciyle başlar. Bir kabuğu veya betiği yönetici olarak çalıştırdığınızda, Windows onay ister ve ardından yönetici belirteciyle yeni bir işlem başlatır. Bu belirteç, korunan sistem konumlarını ve ayarlarını değiştirme hakları verir.
Yükseltme, kimlik doğrulama ve yetkilendirme ilişkili ama farklı kavramlardır. Kimlik doğrulama kimsiniz onu doğrular. Yetkilendirme ne yapabileceğinizi belirler. Yükseltme, geçerli işlemdeki belirteci standarttan yöneticiye çevirir. Bu geçiş, Program Files, sistem hizmetleri ve kayıt defterindeki HKLM gibi hassas alanlara erişimin kilidini açar.
UAC, sessiz yükseltmeyi engellemek için vardır. İstem, kullanıcı niyetini doğrular, arka plan süreçlerinin fark edilmeden yönetici hakları kazanmasını önler ve daha güvenli bir temel korumaya yardımcı olur. Yükseltme gücünüzü artırdığından, riski de artırır. Asgari ayrıcalık yaklaşımını benimseyin: yalnızca gerektiğinde yükseltin, işiniz bittiğinde yükseltilmiş pencereleri kapatın ve yönetimsel görevleri kapsamlı ve iyi günlüklenmiş tutun.
Kavram netleştikten sonra, gereksiz riske yol açmamak veya aşırı kullanmamak için ne zaman gerçekten yükseltmenin gerekli olduğunu bilmek bir sonraki adımdır.
Gerçekte Ne Zaman Yönetici Haklarına İhtiyaç Duyarsınız (Yaygın Görevler ve Senaryolar)
Her betiğin yükseltmeye ihtiyacı yoktur. Yükseltmeyi yalnızca görev korunan kaynaklara veya sistem genelindeki yapılandırmaya dokunduğunda kullanın.
Yönetici hakları gerektiren tipik senaryolar:
– Sistem yapılandırması ve kayıt defteri değişiklikleri: HKLM düzenleme, sistem ortam değişkenlerini ayarlama, önyükleme veya sürücü ayarlarını değiştirme.
– Yazılım yükleme ve modül güncellemeleri: makine genelinde kurulumlar, Program Files altına yazma, sistem düzeyinde modül yollarını değiştirme, COM bileşenlerini kaydetme.
– Ağ, hizmetler ve güvenlik duvarı kuralları: hizmetleri başlatma ve durdurma, Windows Güvenlik Duvarı kuralları oluşturma veya güncelleme, port bağlama, bağdaştırıcıları yapılandırma.
Bir betik profilinizdeki dosyaları okuyorsa, kullanıcı düzeyindeki ayarları değiştiriyorsa veya yönetici erişimi gerektirmeyen API’leri çağırıyorsa, yükseltme olmadan çalıştırın. Önce standart olarak test edin. İzin sorunları nedeniyle başarısız olursa, bilinçli olarak yükseltin. Artık ne zaman yükselteceğinize karar verebildiğinize göre, hızlı ve güvenilir bir şekilde yükseltilmiş bir oturumu başlatma yollarına geçelim.
PowerShell Betiklerini Yönetici Olarak Çalıştırmak için Hızlı GUI Yöntemleri
Hızlı, tek seferlik yükseltilmiş bir çalıştırmaya ihtiyacınız olduğunda GUI yöntemleri en basit yoldur. El ile düzeltmeler ve otomatikleştirmeden önce hızlı testler için idealdir.
Windows Terminal: yükseltilmiş bir profil açın
1) Windows Terminal’e sağ tıklayın ve Yönetici olarak çalıştır’ı seçin.
2) UAC istemini onaylayın.
3) Yükseltilmiş terminalde tercih ettiğiniz kabuğu başlatın (PowerShell 7 için pwsh, Windows PowerShell 5.1 için powershell) ve betiğinizi çalıştırın, örneğin: .\script.ps1.
Başlat Menüsü ve Arama: PowerShell veya PowerShell 7’yi yönetici olarak çalıştırın
1) Başlat’a basın ve PowerShell veya PowerShell 7 yazın.
2) Uygulama sonucuna sağ tıklayın ve Yönetici olarak çalıştır’ı seçin.
3) cd ile betik klasörüne gidin ve .ps1 dosyasını çalıştırın.
Her zaman yönetici olarak açılan Görev Çubuğu ve Başlat kısayolları
1) Windows Terminal, PowerShell 7 veya Windows PowerShell’i sabitleyin.
2) Sabitlenen simgeye sağ tıklayın, uygulama adına tekrar sağ tıklayın ve ardından Yönetici olarak çalıştır’ı seçin.
3) Betiğinizi bu yükseltilmiş pencereden çalıştırın.
.ps1 dosyaları için sağ tıklama menüsü
Varsayılan ‘PowerShell ile Çalıştır’ seçeneği yükseltme yapmayabilir. Yükseltmeyi garanti etmek için önce yükseltilmiş bir kabuk açın, sonra betiği çalıştırın. Doğrudan sağ tıklamayla yükseltme eylemi istiyorsanız, bir başlatıcı komut aracılığıyla RunAs çağıran özel bir bağlam menüsü girdisi ekleyin. Yeniden kullanılabilir ve betiklenebilir bir yaklaşımı tercih ediyorsanız, komut satırından yükseltme daha esnektir ve sonraki bölümde ele alınmıştır.
Komut Satırıyla Yükseltme Yöntemleri (Start-Process -Verb RunAs)
Komut satırından yükseltme öngörülebilirdir, kısayollara gömmesi kolaydır ve dağıtım betikleri için uygundur. Temel teknik, RunAs fiiliyle Start-Process kullanmaktır.
Doğru kabuğu seçin
– powershell.exe, Windows’a yerleşik Windows PowerShell 5.1’dir.
– pwsh.exe, çapraz platform ve sık güncellenen PowerShell 7+’dır.
Modüllerinizi ve hedef ortamınızı destekleyen kabuğu seçin. Yeni otomasyon için pwsh genellikle tercih edilir.
Doğru tırnak kullanımı, yollar ve çalışma dizini
Start-Process, kabuğu yükseltmenize ve betik argümanlarını güvenli şekilde iletmenize olanak tanır. Örnek:
Start-Process -FilePath ‘pwsh.exe’ -Verb RunAs -ArgumentList ‘-NoProfile’,’-ExecutionPolicy’,’Bypass’,’-File’,’C:\Path With Spaces\script.ps1′,’-Param’,’Value
-ArgumentList içinde öğeleri ayrı ayrı kullanarak tırnak hatalarını azaltın. Yükseltilmiş işlemin çalışma dizininden bağımsız olarak betiği bulabilmesi için mutlak yolları tercih edin.
Yürütme ilkesi ve dosya güveni
Bir indirme işareti betiğinizi engelliyorsa, Unblock-File çalıştırın. Bir ilke geçici olarak yürütmeyi engelliyorsa ve acil bir çalıştırmaya ihtiyacınız varsa, yükseltilmiş çağrıda -ExecutionPolicy Bypass ekleyin. Uzun vadeli hijyen için, betikleri imzalayın ve her seferinde bypass’a güvenmek yerine kurumsal ilkeyle hizalayın.
Betikte yükseltmeyi algılama ve doğrulama
Betikleriniz, yönetici haklarıyla çalışıp çalışmadığını kontrol edebilir ve buna göre tepki verebilir. Yükseltilmemişse, Start-Process -Verb RunAs ile kendini yeniden başlatabilir. Bu kalıp, belirsizliği ortadan kaldırır ve bir sonraki bölümün odak noktasıdır.

Kendi Kendini Yükselten Bir PowerShell Betiği Oluşturun (En İyi Uygulamalar)
Kendi kendini yükselten bir betik, kullanıcı deneyimini iyileştirir ve destek sorunlarını azaltır. Yükseltilip yükseltilmediğini tespit eder ve değilse kendini yönetici haklarıyla yeniden başlatır. Bu, betiğin her zaman ihtiyaç duyduğu ayrıcalıklarla çalışmasını sağlar ve gerekmediğinde de gereksiz yükseltmeyi önler.
Temel algılama ve yeniden başlatma
1) Yükseltmeyi algılayın. Örneğin, Yöneticiler grubuna grup üyeliğini kontrol edin veya yükseltme durumunu gösteren kabuk tarafından sağlanan bir değişkeni kullanın.
2) Yükseltilmemişse, aynı betiği yeniden başlatın:
– Uygun kabuğu başlatmak için Start-Process -Verb RunAs kullanın.
– Tutarlı davranış için -NoProfile ekleyin.
– -File ve tam betik yolunu geçin, ardından parametreleri iletin.
Parametreleri, tırnaklamayı ve $PSCommandPath’i koruyun
– Geçerli betik yoluna güvenilir şekilde başvurmak için $PSCommandPath kullanın.
– Kullanıcı tarafından sağlanan tüm parametreleri taşımak için $args’ı iletin.
– Tırnakların bozulmasını önlemek için -ArgumentList içinde her değeri ayrı bir öğe olarak geçin.
– Kabuk seçimini tutarlı tutun: betik PowerShell 7 özellikleri gerektiriyorsa, pwsh ile yeniden başlatın.
Yeniden başlatma döngülerini önleyin ve çıkış kodlarını iletin
İkinci çalıştırmaya -Elevated gibi bir koruma bayrağı ekleyin. Bu bayrağı kontrol edin ve mevcutsa yeniden başlatmayı atlayın. Yükseltilmiş çalışma tamamlandığında, zamanlayıcılar, ardışık düzenler veya çağıran işlemler başarım veya hatayı algılayabilsin diye uygun bir kodla çıkın.
Çıktıyı yakalama: yönlendirme, transkriptler ve günlükler
Güvenilirlik ve destek için günlükleri güvenli bir konuma yazın. Start-Transcript kullanın veya akışları yazılabilir bir yol altındaki dosyalara yönlendirin. Örneğin, makine genelindeki işler için ProgramData altındaki özel bir günlükler klasörüne veya kullanıcı kapsamlı tanılamalar için kullanıcı profili altına yazın. Ayrıntılı günlükler, çalışma sonrası sorun gidermeyi çok daha hızlandırır.
Kendi kendini yükselten bir kalıp ile, betiği çift tıklayabilir veya bir yönetici olmayan kabuktan başlatabilir ve yine de tüm parametreler korunarak temiz bir yükseltilmiş çalışma elde edebilirsiniz.

Gözetimsiz Yükseltilmiş Çalıştırmalar için Zamanlanmış Görevler
Bazı işler, klavye başında kimse olmadan yönetici haklarıyla çalışmalıdır. Windows Görev Zamanlayıcı, bunu yapmak için yerleşik ve ilkeye uygun bir yol sunar.
‘En yüksek ayrıcalıklarla çalıştır’ seçeneği ile bir görev oluşturun
1) Görev Zamanlayıcı’yı açın ve Görev Oluştur’u seçin.
2) Genel sekmesinde, ‘En yüksek ayrıcalıklarla çalıştır’ı işaretleyin.
3) Görevi çalıştırması gereken kullanıcı veya hizmet hesabını seçin.
4) Başsız çalışma için isteğe bağlı olarak ‘Kullanıcı oturum açmış olsun veya olmasın çalıştır’ı seçin.
Tetikleyicileri ve eylemleri yapılandırın
1) Betiğin ne zaman çalıştırılacağını belirleyen bir tetikleyici ekleyin: oturum açıldığında, bir zamanlamaya göre veya belirli bir olayda.
2) Kabuğunuzu ve betiğinizi başlatan bir eylem ekleyin, örneğin:
– Program: pwsh.exe veya powershell.exe
– Argümanlar: -NoProfile -ExecutionPolicy Bypass -File ‘C:\Path\script.ps1’ -Param Value
3) Dayanıklılık için görevin çok uzun çalışması halinde durdurulmasını ve başarısızlıkta yeniden başlamasını ayarlayın.
Kimlik bilgileri, gMSA ve güvenlik
Sunucularda, parola döndürmeden kaçınmak için grup yönetimli hizmet hesabını (gMSA) düşünün. Göreve yalnızca ihtiyaç duyduğu hakları verin. Günlükleri bu hesabın erişebileceği bir yola kaydedin.
Geçmişi ve günlükleri yakalayın
Denetim için Görev Geçmişi’ni etkinleştirin. stdout ve stderr’i dosyalara yönlendirin. Ayrıntılı çalıştırmaları yakalamak için transkriptleri kullanın. Zamanlanmış bir görevle, yükseltme tutarlı ve müdahalesiz hale gelirken yine de UAC ilkesine uygun kalır.
Windows 11/10’da Yükseltme Sorunlarını Giderme
İyi planlanmış yükseltme bile ortam, ilke veya araç zinciri sorunları nedeniyle başarısız olabilir. Sorunu hızlıca izole etmek ve çözmek için yapılandırılmış bir yaklaşım kullanın.
Kabuğu ve sürümü doğrulayın
Windows PowerShell 5.1’de mi yoksa PowerShell 7+’da mı olduğunuzu doğrulamak için $PSVersionTable komutunu çalıştırın. Bazı modüller yalnızca 5.1’de çalışırken, diğerleri 7+ gerektirir. Eksik cmdlet’leri veya davranıştaki ince farkları önlemek için yükseltme çağrınızda doğru kabuğu başlatın.
Yürütme ilkesi kapsamını ve çatışmaları kontrol edin
Yürütme ilkeleri kapsama göre uygulanır: Process, CurrentUser, LocalMachine ve etki alanı düzeyinde MachinePolicy ve UserPolicy. Etki alanı ilkeleri yerel ayarların üzerine yazar. Kurumsal bir ilke betiğinizi engelliyorsa, imzalı bir betik veya ilke istisnası isteyin. Kısa süreli testler için, yükseltilmiş başlatmada -ExecutionPolicy Bypass kullanın, ardından imzalı koda geçin.
Dosyaların engelini kaldırın ve konumları göz önünde bulundurun
İnternetten indirilen dosyalar yürütmeyi engelleyen bir bölge tanımlayıcısı taşıyabilir. Unblock-File çalıştırın veya betiği güvenilir bir yola kaydedin. Kritik betikleri güvenilmez ağ paylaşımlarından çalıştırmaktan kaçının. Bir UNC yolu gerekiyorsa, izinlerin ve güvenin yerinde olduğundan emin olun veya yerel bir çalışma dizinine kopyalayın.
UAC ve -Credential’ı anlayın
-Credential geçirmek yükseltme yapmaz; başka bir kullanıcı olarak kimlik doğrular ancak UAC’ye tabi kalır. Yeni kullanıcının yükseltilmiş bir belirteci yoksa, işlem yükseltilmez. Yükseltme için Start-Process -Verb RunAs veya bir zamanlanmış görev kullanın. AppLocker, WDAC veya EDR gibi uç nokta güvenlik araçları yürütmeyi engelliyorsa, günlüklerini inceleyin ve ilke güncellemeleri talep edin.
Windows Terminal ve profil ayarlarını doğrulayın
Yükseltmeyi bekliyor ama görmüyorsanız, yükseltilmiş bir terminal açtığınızı doğrulayın. Standart bir terminal yönetici haklarını devralmaz. Ayrıca, terminalin kullandığı profilin beklediğiniz kabuğu ve argümanları başlattığını kontrol edin.
Sorun giderme tamamlandığında, yükseltmenin kural değil istisna olarak kalması için güvenlik duruşunuzu gözden geçirmelisiniz.
Güvenlik, Uyumluluk ve Asgari Ayrıcalık Alternatifleri
Yükseltme güçlüdür, bu yüzden etrafına korkuluklar koyun. İyi güvenlik uygulamaları, gerekli idari çalışmaya izin verirken sisteminizi güvende tutar.
Betikleri imzalayın ve ilkeyi hizalayın
Üretim betiklerini güvenilir bir kod imzalama sertifikasıyla imzalayın. Ortamınıza uygun olarak RemoteSigned veya AllSigned kullanın. İmzalı kod, güven inşa eder ve kurcalama riskini azaltır.
JEA ve rol yetkilendirmesini kullanın
Just Enough Administration (JEA), tam yönetici hakları olmadan belirli yönetimsel yetenekler vermenizi sağlar. Onaylı görevleri izin veren, diğer her şeyi engelleyen kısıtlı uç noktalar ve roller tanımlayın. JEA, ekiplere geniş yerel yönetici hakları dağıtmadan bakım yapma olanağı sunar.
Kurumsal denetimlerden yararlanın
Windows Defender Application Control (WDAC) ve AppLocker, betik ve ikili yürütmeyi onaylı öğelerle sınırlandırabilir. Yükseltme kısayollarını, PowerShell profillerini ve zamanlanmış görevleri standart bir şekilde dağıtmak için Intune veya Grup İlkesi kullanın. Tutarlılık, sapmayı ve destek sorunlarını azaltır.
Her şeyi denetleyin
PowerShell için olay günlüğünü etkinleştirin, yükseltilmiş oturumlar için transkriptleri saklayın ve günlükleri düzenli olarak gözden geçirin. Denetim, kötüye kullanımı caydırır, olay müdahalesini hızlandırır ve uyumluluk incelemeleri için kanıt sağlar.
Sonuç
Artık Windows 11 ve Windows 10’da PowerShell’de bir betiği yönetici olarak çalıştırmak için eksiksiz bir oyun kitabına sahipsiniz. Hızlı düzeltmeler ve testler için GUI yükseltmesini kullanın. Öngörülebilir komut satırı yükseltmesi ve sıkça çalıştıracağınız kısayollar için Start-Process -Verb RunAs kullanın. Betiklerin parametreleri ve çıkış kodlarını koruyarak yönetici haklarıyla kendilerini yeniden başlatabilmeleri için kendi kendini yükselten bir kalıp ekleyin. Kullanıcı olmadan çalışması gereken işler için, en yüksek ayrıcalıklarla çalışan ve günlükleri yakalayan zamanlanmış görevler oluşturun.
Sorunlar ortaya çıktığında, kabuk sürümünü doğrulayın, yürütme politikasını ve dosya güvenini kontrol edin ve terminalin yükseltildiğini onaylayın. İlkeler betiğinizi engelliyorsa uç nokta güvenlik ekipleriyle koordine olun. Her şeyden önemlisi, yalnızca gerektiğinde yükseltin, kodu imzalayın ve yaptıklarınızı günlükleyin. Bu hız, yapı ve güvenlik karışımı, otomasyonunuzu etkili ve sistemlerinizi ölçekli olarak güvenli tutar.
Sıkça Sorulan Sorular
UAC istemi olmadan bir PowerShell betiğini yönetici olarak çalıştırabilir miyim?
Evet, ancak yalnızca onaylanmış mekanizmalar aracılığıyla. UAC sistemi korumak için vardır. Tekrarlanabilir işler için istemleri önlemek amacıyla, en yüksek ayrıcalıklarla çalışacak ve kullanıcı oturum açmış olsun ya da olmasın çalışacak şekilde yapılandırılmış bir zamanlanmış görev oluşturun. Bunu isteğe bağlı olarak, bir zamanlamayla veya bir olaya bağlı olarak tetikleyin. Yönetilen ortamlarda Intune veya Configuration Manager gibi araçlar, imzalı betikleri hizmet ya da sistem hesapları altında dağıtabilir. Üçüncü taraf UAC atlatma numaralarından kaçının; bunlar riski artırır ve çoğu zaman politikalara aykırıdır.
-Credential kullanmak PowerShell oturumumu yükseltir mi?
Hayır. -Credential, farklı bir kullanıcı olarak kimlik doğrular ancak yükseltilmiş bir yönetici belirteci sağlamaz. UAC yine de geçerlidir. Yükseltmeye ihtiyacınız varsa, işlemi Start-Process -Verb RunAs ile başlatın, yükseltilmiş bir kısayol kullanın veya en yüksek ayrıcalıklarla çalışacak şekilde yapılandırılmış bir zamanlanmış görev ayarlayın. En az ayrıcalık ilkesini aklınızda bulundurun ve yalnızca işin gerektirdiği hakları verin.
Bir .ps1’in her zaman yönetici hakları istemesini nasıl zorlarım?
Betiğin en üstüne kendini yükselten bir sarmalayıcı ekleyin. Geçerli sürecin yükseltilmiş olup olmadığını tespit edin. Değilse, aynı betiği Start-Process -Verb RunAs ile yeniden başlatın, betik yolu ile birlikte -NoProfile ve -File geçirerek çalıştırın, parametreleri iletin ve özgün örnekten çıkın. Yeniden başlatma döngülerini önlemek için bir koruma bayrağı ekleyin. Yoğun otomasyon için, kullanıcı tıklamalarına güvenmektense en yüksek ayrıcalıklarla çalışan bir zamanlanmış görev daha güvenilirdir.
