2009-04-08 12 views
53

Próbuję wykonać skrypt z folderu udostępnionego, że zaufanie:Ignoruj ​​„Bezpieczeństwo ostrzeżenie” uruchomiony skrypt z linii poleceń

PowerShell -file "\\server\scripts\my.ps1" 

Ale pojawia się ostrzeżenie o zabezpieczeniach, a trzeba nacisnąć „R”, aby kontynuować

Ostrzeżenie dotyczące zabezpieczeń Należy uruchamiać tylko te skrypty, którym ufasz, aby uzyskać . Chociaż skrypty z Internetu mogą być przydatne, ten skrypt może potencjalnie zaszkodzić komputerowi. Czy chcesz uruchomić \ server \ scripts \ my.ps1? [?] [D] Nie run [R] Uruchom raz [S] Zawiesić Pomoc (domyślnie jest to "D"): d

mogę zignorować to ostrzeżenie? Pożądana pseudokod chcę jest:

PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1" 

Odpowiedz

72

Jest to wzmiankowane w "PowerShell Execution Policies in Standard Images" on Lee Holmes' Blog i "PowerShell’s Security Guiding Principles" on the Windows Power Shell Blog .

Podsumowanie Niektóre maszyny traktują ścieżki UNC jako duży, zły internet, więc PowerShell traktuje je jako pliki zdalne. Możesz wyłączyć tę funkcję na tych serwerach (UncAsIntranet = 0,) lub dodać zdalne komputery do zaufanych hostów.

Jeśli nie chcesz wykonywać żadnej, PowerShell v2 obsługuje parametr -ExecutionPolicy, który wykonuje dokładnie to, czego żąda twój pseudokod. PowerShell -ExecutionPolicy Bypass -File (...).

+3

Dziękujemy! -ExecutionPolicy Bypass jest dokładnie tym, czego szukałem. – alex2k8

+1

@LeeHomes Szukałem czegoś innego, ale '-ExecutionPolicy ByPass' naprawił mój problem. Uratowałeś mi dużo pracy i czasu. Dzięki – Suhas

+1

Wystarczy wyjaśnić - "dodaj do zaufanych hostów" oznacza w opcjach internetowych systemu, dostępnych za pośrednictwem panelu sterowania lub w przeglądarce internetowej. Nazwa wydaje się być dopasowaniem ciągów. moja nazwa udziału to '\\ foo-files'. Dodanie nazwy 'foo-files.example.com' do zaufanych hostów nie zadziałało, musiałem po prostu dodać nazwę' foo-files'. –

2

chcesz ustawić zasady wykonania na komputerze przy użyciu Set-ExecutionPolicy:

Set-ExecutionPolicy Unrestricted 

może chcesz zbadać różne zasady wykonawcze, aby zobaczyć, który z nich jest dla ciebie. Zajrzyj do "help about_signing", aby uzyskać więcej informacji.

+0

który zmieni politykę realizacji zleceń na stałe, co może ani być pożądanym do jednorazowego użycia. – Joey

+3

Ustawienie opcji ExecutionPolicy na Unrestricted umożliwia wykonywanie skryptów sieciowych, ale nie pomija tego monitu. – Yevgeniy

+1

Chcesz użyć "obejścia" zamiast "nieograniczonego". "Bypass" jest nawet MNIEJSZYM restrykcyjnym niż "nieograniczony" i pozbywa się podpowiedzi bezpieczeństwa. –

3

Spróbuj tego, edytować plik:

notepad foo.ps1:Zone.Identifier 

i ustawić 'ZoneId = 0'

+3

Lub, w V3, 'Unblock-File' (chociaż ten komentarz i ta odpowiedź nie mają nic wspólnego z pytaniem IO) –

1

Czy pobrać skrypt z Internetu?

Następnie usuń strumień NTFS z pliku, używając wiersza poleceń sysinternal's streams.exe.

cmd> streams.exe .\my.ps1 

Teraz spróbuj ponownie uruchomić skrypt.

+2

Lub, w V3,' Unblock-File' (chociaż ten komentarz i ta odpowiedź nie mają nic wspólnego z z pytaniem IO) –

38

Aby uniknąć ostrzeżenia można:

Set-ExecutionPolicy bypass 
+3

Ostrzeżenie: Ustawia to ExecutionPolicy na całym komputerze, co stanowi duże zagrożenie bezpieczeństwa. Rozwiązanie @LeeHolmes wyżej ustawia ExecutionPolicy tylko dla tej sesji, co stanowi mniejsze ryzyko. – JamesQMurphy

+0

Uważam, że konsekwencje dla bezpieczeństwa są okropne, ale jest to jedyny sposób, w jaki znalazłem edycję zdalnego pliku za pomocą PowerShell ISE i nie ma okienka pop-up za każdym kliknięciem przycisku run ... przynajmniej bez zmiany ustawień Internet Security, które - w przypadku środowiska docelowego - złamie zawartość ActiveX, a także niektóre źle wybrane, ale potrzebne ustawienia zabezpieczeń międzydomenowych, które działają tylko w domyślnej strefie lokalnego intranetu. – tresf

35

Jeśli używasz do tego błędu z pobranego skryptu PowerShell, można odblokować Skrypt ten sposób:

  1. prawym przyciskiem plik .ps1 na pytanie i wybierz Properties

  2. Kliknij Odblokuj we właściwościach plików

    enter image description here

  3. Kliknij OK

+1

Dzięki! To działało dla mnie, byłam podpowiadana przy każdym uruchomieniu nawet przy użyciu Set-ExecutionPolicy Unrestricted –

+0

Możesz także użyć komendy Odblokuj plik – jhclark

+0

Przynajmniej na moim komputerze, 'Unblock-File' nie wydaje się pomagać w ścieżce UNC, jak pokazano na ilustracji w oryginalnym pytaniu, ani przycisk "Odblokuj" nie pojawia się w oknie dialogowym właściwości pliku. Zakładam, że dzieje się tak dlatego, że twój plik jest hostowany lokalnie 'C: \ ...', co sprawia, że ​​ta odpowiedź jest nieważna na oryginalne pytanie (choć pomocne dla> = 28 innych) – tresf

0

Załóżmy, że trzeba uruchomić skrypt ps z udostępnionego folderu

copy \\\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1 

PS: Zmniejszyć googlowania)

9

Wystarczy przypisać 1 do SEE_MASK_NOZONECHECKS ENV zmienna

$env:SEE_MASK_NOZONECHECKS = 1 
Start-Process $msi_file_path /qn -Wait | out-null 
+1

'Start-Process' nie obsługuje' -ExecutionPolicy Obwodnica 'tak, że zawodziła na ścieżce UNC, nawet z wyłączonym UAC. Ale dzięki tej sztuczce działa. Wznoszę wszystkie ręce. –

+0

Ty wygrywasz noc. – ojblass

0

zrobiłem tego skryptu powershell, aby odblokować wszystkie pliki na akcję na moim serwerze

Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % { 
     Unblock-File -Path $_.FullName 
} 
+0

'Unblock-File' nie działało w moich testach (Windows 10, PowerShell ISE). – tresf

Powiązane problemy