PowerShell, “bu sistemde komut dosyalarının yürütülmesi devre dışı” diyor.


1760

Koşmaya çalışıyorum bir dosyayı çağıran dosya komut dosyasından cmd.exeve aşağıdaki hatayı alıyorum:

Management_Install.ps1 bu sistemde komut dosyalarının yürütülmesi devre dışı bırakıldığı için yüklenemiyor.

Koştum

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

ve ben çalıştırdığınızda Get-ExecutionPolicygelen, UnrestrictedGeri dönüyorum.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1Bu sistemde komut dosyalarının yürütülmesi devre dışı bırakıldığı için dosya yüklenemiyor. Daha get-help about_signingfazla ayrıntı için lütfen " " bölümüne bakın.

Satırda: 1 karakter: 25

  • .\Management_Install.ps1 <<<< 1

    • CategoryInfo: Belirtilmedi: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

Sistem Windows Server 2008R2'dir.

Neyi yanlış yapıyorum?


3
Bak dostum, Yönetici olarak giriş yaptım ve "Yönetici" olarak da çalıştım ve yukarıdakiyle aynı sonucu aldım ...
Conor

2
Altına var, hata yanıltıcı, sorun benim powershell betiğimde oldu, teşekkürler!
Conor

Yürütme Politikasının çeşitli kapsamlar içerdiğini ve PowerShell'i farklı şekillerde çalıştırmanın size farklı politikalar getirebileceğini belirtmek gerekir. Politikaların listesini görüntülemek için çalıştırın Get-ExecutionPolicy -List.
Bacon Bits

Yanıtlar:


2240

Windows Server 2008 R2 kullanıyorsanız , PowerShell'in her ikisi de yürütme ilkelerinin ayarlanmış olması gereken bir x64 ve x86 sürümü vardır. Her iki ana bilgisayarda yürütme ilkesini belirlediniz mi?

Bir As Administrator , kendi PowerShell penceresine bu yazarak yürütme politikası ayarlayabilirsiniz:

Set-ExecutionPolicy RemoteSigned

Daha fazla bilgi için, bkz . Set-ExecutionPolicy Cmdlet'ini kullanma .

İşiniz bittiğinde, ilkeyi aşağıdakilerle varsayılan değerine geri ayarlayabilirsiniz:

Set-ExecutionPolicy Restricted

141
Set-ExecutionPolicy Restrictedizinleri oldukları gibi geri koymak istiyorsanız geri almanın bir yolu gibi görünüyor: technet.microsoft.com/en-us/library/ee176961.aspx . Geçici bypass yöntemi @Jack Edmondsbana göre daha güvenli görünüyor:powershell -ExecutionPolicy ByPass -File script.ps1
SharpC

33
Daha güvenli bir politika için, bunu gerçek kullanıcıya dahil edin: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Nuno Aniceto

Set-ExecutionPolicy RemoteSigned, komut dosyanızdaki ilk satır olamaz. Öyleyse, onu vurgulayın ve komut dosyanızın geri kalanını çalıştırmadan önce yalnızca INITIALLY seçeneğini seçin.
ozzy432836

SF sitesinde benzer bir soru ile karşılaştım, "SQL Server içindeki Powershell yürütme politikası" 10 Ekim 14 istedi. Orada cevaplar Get-ExecutionPolicy -Listfarklı kapsamları görmeme yardımcı oldu. Cmd Get-ExecutionPolicytüm kapsamları göstermiyor. Import-Module SQLPSŞimdi ile çalışıyor olarak değiştirildi politikaları aşağıdaki gibidir: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}.
SherlockSpreadsheets

Bunu yaparsam, değişiklik yalnızca geçerli PowerShell süresi boyunca devam eder mi? Yoksa bundan daha mı büyük?
William Jockusch

709

-ExecutionPolicy BypassPowerShell'i çalıştırırken ekleyerek bu ilkeyi tek bir dosya için atlayabilirsiniz

powershell -ExecutionPolicy Bypass -File script.ps1

3
Bu, yönetici olmayan bir hesap kullanıyorsanız gerçekten kullanışlıdır. %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPassGörev çubuğumda kısayol yaptım .
zek19

3
Microsoft Technet'in bunu "ByPass" olarak değil "Bypass" olarak stilize ettiğini unutmayın. Bkz. Technet.microsoft.com/nl-nl/library/hh849812.aspx
Jelle Geerts

1
Bu benim için işe yaramıyor, normal olarak adlandırdığım gibi izin verilmedi. Yaparak bir .bat dan ps1 çağırmak type script.ps1 | powershell -işe yarıyor.
Some_Guy

8
Yürütme Politikasının amacı, insanların bir .ps1şeyi çift ​​tıklamasını ve istemedikleri bir şeyi yanlışlıkla çalıştırmasını önlemektir . Bu .batdosyalarda olur
Kolob Kanyonu

Günümü kurtardın cevap için teşekkür ederim.
Arpit Patel

162

Ben benzer bir sorunu vardı ve varsayılan kaydetti cmdüzerinde Windows Server 2012 , x64 biri koşuyordu.

For Windows 7 , Windows 8 , Windows 10'a , Windows Server 2008 R2 veya Windows Server 2012 , aşağıdaki komutları çalıştırın Yönetici :

x86 (32 bit)
Open C:\Windows\SysWOW64\cmd.exe
Komutu çalıştırpowershell Set-ExecutionPolicy RemoteSigned

x64 (64 bit)
Open C:\Windows\system32\cmd.exe
Komutu çalıştırpowershell Set-ExecutionPolicy RemoteSigned

Modunu kullanarak kontrol edebilirsiniz.

  • CMD'de: echo %PROCESSOR_ARCHITECTURE%
  • Powershell'de: [Environment]::Is64BitProcess

Referanslar:
MSDN - Windows PowerShell yürütme ilkeleri
Windows - 32bit vs 64bit dizin açıklaması


133

Varolan cevapların çoğu açıklamak How , ama çok az açıklamak niçin . İnternetteki yabancılardan, özellikle de güvenlik önlemlerini devre dışı bırakan koddan geçmeden önce, ne yaptığınızı tam olarak anlamanız gerekir. İşte bu sorun hakkında biraz daha ayrıntı.

TechNet'ten Yürütme İlkeleri Sayfası Hakkında :

Windows PowerShell yürütme ilkeleri, Windows PowerShell'in yapılandırma dosyalarını ve komut dosyalarını çalıştırma koşullarını belirlemenize olanak tanır.

PowerShell Temelleri - Yürütme İlkesi ve Kod İmzalama ile numaralandırıldığı gibi faydaları şunlardır:

  • Yürütme Denetimi - Komut dosyalarını yürütmek için güven düzeyini denetleyin.
  • Command Highjack - Yolumdaki komutların enjeksiyonunu engelleyin.
  • Kimlik - Komut dosyası, güvendiğim bir geliştirici tarafından oluşturulmuş ve imzalanmış ve / veya güvendiğim bir Sertifika Yetkilisi'nden bir sertifika ile imzalanmış mı?
  • Bütünlük - Komut dosyaları, kötü amaçlı yazılım veya kötü amaçlı kullanıcılar tarafından değiştirilemez.

Mevcut yürütme politikanızı kontrol etmek için çalıştırabilirsiniz Get-ExecutionPolicy. Ama muhtemelen buradasınız çünkü değiştirmek istiyorsunuz.

Bunu yapmak için Set-ExecutionPolicycmdlet'i çalıştırırsınız.

Yürütme politikasını güncellerken iki büyük karar vereceksiniz.

Yürütme İlkesi Türü:

  • Restricted - Sistemde yerel, uzak veya indirilmiş Komut Dosyası çalıştırılamaz.
  • AllSigned - Çalıştırılan tüm komut dosyalarının dijital olarak imzalanması gerekir.
  • RemoteSigned - Tüm uzak komut dosyalarının (UNC) veya indirilenlerin imzalanması gerekir.
  • Unrestricted - Her tür komut dosyası için imza gerekmez.

Yeni Değişimin Kapsamı

  • LocalMachine - Yürütme ilkesi bilgisayarın tüm kullanıcılarını etkiler.
  • CurrentUser - Yürütme ilkesi yalnızca geçerli kullanıcıyı etkiler.
  • Process - Yürütme ilkesi yalnızca geçerli Windows PowerShell işlemini etkiler.

† = Varsayılan

Örneğin : ilkeyi yalnızca CurrentUser için RemoteSigned olarak değiştirmek isterseniz, aşağıdaki komutu çalıştırırsınız:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Not : Yürütme ilkesini değiştirmek için PowerShell Yönetici Olarak çalıştırıyor olmanız gerekir . Normal moddaysanız ve yürütme ilkesini değiştirmeye çalışırsanız, aşağıdaki hatayı alırsınız:

'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' kayıt defteri anahtarına erişim reddedildi. Varsayılan (LocalMachine) kapsamının yürütme ilkesini değiştirmek için, Windows PowerShell'i "Yönetici olarak çalıştır" seçeneğiyle başlatın.

Internet'ten indirilmemiş (veya en azından UNC meta verilerini içermeyen) kendi komut dosyalarınızdaki dahili kısıtlamaları sıkılaştırmak istiyorsanız, ilkeyi yalnızca imzalı komut dosyalarını çalıştırmaya zorlayabilirsiniz. Kendi komut dosyalarınızı imzalamak için Scott Hanselman'ın PowerShell Komut Dosyalarını İmzalama başlıklı makalesindeki talimatları takip edebilirsiniz .

Not : Çoğu kişi Powershell'i açtıklarında bu hatayı alırlar çünkü PS başlatıldığında yapmaya çalıştığı ilk şey, ortamınızı istediğiniz gibi ayarlayan kullanıcı profili komut dosyanızı çalıştırmaktır.

Dosya genellikle şu konumda bulunur:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Powershell değişkenini çalıştırarak tam konumu bulabilirsiniz

$profile

Profilde önemsediğiniz bir şey yoksa ve güvenlik ayarlarınızla uğraşmak istemiyorsanız, sadece silebilirsiniz ve powershell yürütemeyeceği hiçbir şey bulamaz.


8
Yürütme ilkesinin bir güvenlik önlemi olmasına rağmen, kullanıcıların PowerShell kodunu yürütmesini önlemeyi amaçlamadığını unutmayın. Yürütme politikası, komut dosyalarınızı korumak ve bunları kimin yazdığını, değiştirdiğini veya onayladığını belirleyen bir şeydir ve hepsi bu. Yürütme politikasını basit bir şeyle ele almak önemsizdir Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -.
Bacon Bits

1
Varlığı göz önüne alındığında -ExecutionPolicy ByPassbile, bu politikanın amacı zaten nedir? Sadece kullanıcıların yanlışlıkla bir powershell konsolu açmasını ve kötü amaçlı bir komut dosyası çalıştırmasını engellemek mi? Saldırgan bunun üstesinden gelmek isterse sadece yürütülebilir dosya veya toplu komut dosyası kullanamaz mı? @BaconBits yorumunu okuduktan sonra bile, bu politikanın hangi senaryoyu önlemek istediği konusunda tam emin değilim ...
Ajedi32

2
@ Ajedi32 Diyelim ki bir ağ paylaşımında komut dosyası çalıştıran bir görevim var. Betiğimi çağırdığımda, işlemimin betiğin imzalanmış olduğunu doğrulamasını istiyorum. Kodumu çalıştırmak için çalışacağım kod olup olmadığını iki kez kontrol etmek istiyorum. Kodumu çalıştırabilir misin umrumda değil. Bunu durdurmak erişim haklarının işi. Sadece yazmadığım kodu çalıştırmama engel olmak istiyorum. Erişim hakları, işletim sisteminin oturum açtığınızda kodumu değiştirmenizi engellediği anlamına gelir. Kod imzalama ve yürütme politikası benim komut değiştirilmedi anlamı ben çalıştırmak için gidin.
Bacon Bits

40

Windows 7'de:

Başlat Menüsü'ne gidin ve "Windows PowerShell ISE" yi arayın.

X86 sürümünü sağ tıklayın ve "Yönetici olarak çalıştır" ı seçin.

Üst kısımda macun Set-ExecutionPolicy RemoteSigned; komut dosyasını çalıştırın. "Evet" i seçin.

Powershell ISE'nin 64 bit sürümü (x86 olmayan sürüm) için de bu adımları yineleyin.

Sadece @Chad Miller'ın ima ettiği adımları açıklığa kavuşturuyorum. Teşekkürler Chad!


39

Ayrıca komuttan önce bu komutu çalıştırmak da sorunu çözer:

set-executionpolicy unrestricted

27
-1 - En az izin ilkesini takip edin. RemoteSignedGüvenlik politikanızdaki tüm kısıtlamaları kaldırmadan önce politikayı en azından olarak ayarlayın . Bu işe yaramazsa, ağrı noktalarınızın ne olduğunu ve neden çalışmadığını yeniden değerlendirin. unrestrictedSon çare olarak ayarlayabilirsiniz , ancak başlangıç ​​noktanız olmamalıdır.
KyleMit

3
Bu seçeneği de işaret ettiğiniz için teşekkür ederiz. Üretim amaçlı güvenlik gereksinimlerine gereken saygıyla, hızlı prototipleme yeteneği talebinin çok yüksek olduğu zamanlarda, tüm politikalar ve güvenlik gerçekten işlerin yapılmasını engeller.
tishma

1
Prototip oluşturmaya ilişkin yorum ile ilgili olarak korkarım ki bu yüzden crappy kod üretime giriyor. Tabii ki bu sadece önemsiz bir örnektir, ancak geliştirme sırasında bu önemsiz bir şeyi çözemezseniz, serbest bırakma endişesi vardır. Ayrıca, ısmarlama kod için ve eğer yapabiliyorsanız, hedef ortamı bilin - iç sistemlerimizin çoğunu olarak ayarladık Remotesigned.
Trix

33

Yönetici olmadığınız bir ortamdaysanız, Yürütme İlkesini yalnızca sizin için ayarlayabilirsiniz; bu nedenle yönetici gerektirmez.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

veya

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Bununla ilgili her şeyi yardım girişinde okuyabilirsiniz.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

Windows 8'de benim için harika çalıştı, hatta Set-ExecutionPolicy Unrestrictedbir yönetici aslında yardımcı olacak kadar "kısıtlamıyor" gibi görünse bile .
patridge

1
Ben yaşadığınız bir GPO ya da başka bir şey ExecutionPolicy "LocalMachine" düzeyi üzerine yazma olduğuna inanıyorum. Set-ExecutionPolicy komutuyla bir Etki Alanı İlkesi'nin üzerine yazamazsınız. Ancak, "CurrentUser" erişim düzeyini ayarladığınızda, yalnızca siz ve yalnızca belirtilen Yürütme İlkesine sahip olursunuz. Bunun nedeni, bilgisayarın LocalMachine ayarına bakmadan önce CurrentUser komutunu yürütme ilkesine bakmasıdır.
Micah 'Powershell Ninja'

1
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Sınırsız" benim için çalışan tek çözüm. Teşekkür ederim
Paulj

32

RemoteSigned: Kendiniz oluşturduğunuz tüm komut dosyalarının çalıştırılacağı ve Internet'ten indirilen tüm komut dosyalarının güvenilir bir yayıncı tarafından imzalanması gerekir.

Tamam, sadece şunu yazarak politikayı değiştirin:

Set-ExecutionPolicy RemoteSigned

Diğer gönderilerde önerildiği gibi: daha güvenli bir politika için "-Scope CurrentUser" ifadesini dahil etmek akıllıca olacaktır.
clusterdude

32

Akım durumunu ExecutionPolicyaşağıdaki komutla alabiliriz:

Get-ExecutionPolicy;

Varsayılan olarak Kısıtlıdır . PowerShell betiklerinin yürütülmesine izin vermek için bu ExecutionPolicy'yi Baypas veya Sınırsız olarak ayarlamamız gerekir .

Geçerli Kullanıcı için ilkeyi aşağıdaki PowerShell komutlarından birini kullanarak Bypassveya Unrestrictedkullanarak ayarlayabiliriz :

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Kısıtlanmamış ilke, tüm yapılandırma dosyalarını yükler ve tüm komut dosyalarını çalıştırır. İnternetten indirilmiş imzasız bir komut dosyası çalıştırırsanız, çalıştırmadan önce sizden izin istenir.

Ancak Baypas politikasında, hiçbir şey engellenmez ve komut dosyası yürütülürken uyarı veya istem yoktur. Bypass ExecutionPolicydaha rahat Unrestricted.


4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; AKA'ya VS2015'e şikayeti durdurmasını ve kanlı senaryomu çalıştırmasını söylemenin hızlı ve kirli yolu. Teşekkürler. cankurtaran.
Eon

1
Komutlarınızın uçlarındaki sondaki noktalı virgüller gereksizdir.
Bill_Stewart

23

Windows 10 kullanıyorum ve herhangi bir komut çalıştıramadım. Bana bazı ipuçları veren tek komut şuydu:

[64]

  1. C: \ Windows \ SysWOW64 \ cmd.exe'yi [yönetici olarak] açın
  2. Komutu çalıştırın> powershell Set-ExecutionPolicy Unrestricted

Ama bu işe yaramadı. Sınırlıydı. Muhtemelen Windows10 için yeni güvenlik politikaları. Bu hatayı aldım:

Set-ExecutionPolicy: Windows PowerShell, yürütme ilkenizi başarıyla güncelleştirdi, ancak ayar, daha spesifik bir kapsamda tanımlanan bir ilke tarafından geçersiz kılınır. Geçersiz kılma nedeniyle, kabuğunuz geçerli etkin yürütme politikasını koruyacaktır ...

Böylece başka bir yol buldum ( çözüm ):

  1. Çalıştır Komutunu / Konsolunu Aç ( Win+R )
  2. Tür: gpedit.msc ( Grup İlkesi Düzenleyicisi)
  3. Göz için Yerel Bilgisayar İlkesi > - Bilgisayar Yapılandırması -> Yönetim Şablonları -> Windows Bileşenleri -> Windows Powershell .
  4. Etkinleştir " Komut Dosyası Yürütmeyi Aç "
  5. Politikayı gerektiği gibi ayarlayın. Benimkini " Tüm komut dosyalarına izin ver " olarak ayarladım .

Şimdi PowerShell'i açın ve keyfini çıkarın;)


Bu tek başına bir yükleme mi, yoksa bir çalışma grubuna veya etki alanına bağlı mısınız?
MEMark

Bunu yapmak için neden cmd'yi açmalıyım? ISE'yi (yönetici olarak) açın ve yazınSet-ExecutionPolicy RemoteSigned
Kolob Kanyonu

OMG bu sonunda benim win10 kutumu düzeltti, @kolob set-executionpolicy yeterli değil
xer0x

Kullanmamalısınız Unrestricted. Kullanmak daha iyi bir uygulamadırRemoteSigned
Kolob Kanyonu

@ xer0x powershell'i yönetici olarak çalıştırdığınız sürece olmalıdır
Kolob Canyon

10

Yürütme ilkesinin ayarlanması ortama özgüdür. Çalıştırdığınız x86 bir komut dosyası yürütmeye çalışıyorsanız İMKB Eğer yürütme politikasını belirlemeye x86 PowerShell kullanmak zorunda. Benzer şekilde, 64 bit ISE'yi çalıştırıyorsanız, politikayı 64 bit PowerShell ile ayarlamanız gerekir.


10

Win+ Ryazın ve kopyala yapıştır komutunu yazın ve tuşuna basın OK:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

Ve senaryonuzu yürütün.

Ardından aşağıdaki gibi değişiklikleri geri alın:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"

10

Aşağıdaki komutu kullanarak bunu atlayabilirsiniz:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Set-ExecutionPolicyYönetici ayrıcalıklarına sahip değilseniz , PowerShell'i atlamanın 15 farklı yolunu açıklayan Scott Sutherland'ın bu makalesini de okuyabilirsiniz :

PowerShell Yürütme İlkesini Atlamanın 15 Yolu


Bu, muhtemelen bu kısıtlamayı gidermek ve anlamak için daha zorlayıcı kılavuzlardan biridir.
Osvaldo Mercado

5
  1. PowerShell'i Yönetici olarak açın ve Set-ExecutionPolicy -Scope CurrentUser'ı çalıştırın
  2. RemoteSigned sağlayın ve Enter tuşuna basın
  3. Set-ExecutionPolicy -Scope CurrentUser'ı çalıştırın
  4. Sınırsız sağlayın ve Enter tuşuna basın

5

bunu deneyebilir ve "Tümü" seçeneğini belirleyebilirsiniz

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

3

PowerShell ISE editöründe, aşağıdaki satırı çalıştırırken önce komut dosyalarına izin verildiğini buldum.

Set-ExecutionPolicy RemoteSigned -Scope Process

2

PowerShell 2.0'da, yürütme ilkesi varsayılan olarak devre dışı olarak ayarlanmıştır.

O andan itibaren, PowerShell ekibi birçok iyileştirme yaptı ve kullanıcıların komut dosyalarını çalıştırırken bir şeyleri kırmayacağından eminler. PowerShell 4.0'dan itibaren, varsayılan olarak etkindir.

Sizin durumunuzda, Set-ExecutionPolicy RemoteSignedPowerShell konsolundan yazın ve evet deyin.


2

Bugün de aynı sorunu yaşadım. 64 bit yürütme ilkesi sınırlandırılırken, 32 bit kısıtlanmıştır.

Yalnızca 32 bit ilkesini uzaktan nasıl değiştireceğiniz aşağıda açıklanmıştır:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

2

Kayıt yoluna gidin HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellve seti ExecutionPolicyiçin RemoteSigned.


1
1. PowerShell'i Yönetici olarak açın ve Set-ExecutionPolicy -Scope CurrentUser komutunu çalıştırın 2. RemoteSigned sağlayın ve Enter tuşuna basın 3. Set-ExecutionPolicy -Scope CurrentUser komutunu çalıştırın 4. Sınırsız verin ve Enter tuşuna basın
Ramanujam Allam

2

Koşmaya çalıştığımda başka bir uyarı alıyorum Set-ExecutionPolicy RemoteSigned

Bu komutlarla çözdüm

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

1

Ruby veya Chef ile çalıştırıp `` sistem yürütme '' kullandığınız için buradaysanız , aşağıdaki gibi çalıştırın:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

Bu komut "Belgelerim" klasörünü almak içindir.

-ExecutionPolicy Unrestricted hile yapar.

Umarım başka biri için faydalıdır.


Çevreleme `` gerçekten orada olmalı mı?
Peter Mortensen

1

Birkaç cevap yürütme politikasına işaret ediyor. Ancak bazı şeyler için "runas yöneticisi" de gerekir. Bu, yürütme ilkesinde kalıcı bir değişiklik olmaması ve en son yönetici kısıtlamasını alabilmesi açısından en güvenlisidir. Aşağıdaki işlemleri içeren bir toplu işi başlatmak için schedtask ile kullanın:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

hem Jack Edmonds hem de Peter Mortensen / Dhana'dan bir uygulama Komut isteminden "Yönetici olarak çalıştır" olarak nasıl çalıştırılır?


1

Bu hattın en iyi Windows Server 2008 R2 sunucularımdan birinde çalıştığını gördüm . Birkaç başka PowerShell betiklerimde bu satır olmadan sorun yaşamadım:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

1

Powershell konsolunu yönetici olarak açın ve ardından yürütme ilkesini ayarlayın

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 

0

Baypas etmek için özel bir yol kullanabilirsiniz:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

Powershell betiğinin içeriğini powershell.exe'ye bağlar ve yürütme ilkesini atlayarak yürütür.


0

Bu benim sorunumu çözdü

Windows PowerShellKomutunu açın ve değiştirmek için aşağıdaki sorguyu çalıştırınExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

değişiklikleri onaylamanızı isterse 'Y' tuşuna basın ve enter tuşuna basın.


0

Set-ExecutionPolicy RemoteSignedKomutu çalıştır


0
  1. Yönetim olarak açık powershell
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

bu komutu kullan



-2

PowerShell penceresini Yönetici olarak açın . Çalışacak.


İşe yaramadı. Ancak, powershell Set-ExecutionPolicy RemoteSigned çalıştırıldığında işe yaradı.
Kasım'da Thronk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.