Ich versuche, ein Skript aus einem freigegebenen Ordner auszuführen, dem ich vertraue:
PowerShell -file "\\server\scripts\my.ps1"
Aber ich bekomme eine Sicherheitswarnung und muss 'R' drücken, um fortzufahren
Sicherheitswarnung Führen Sie nur Skripte aus, denen Sie vertrauen. Während Skripte aus dem Internet nützlich sein können, kann dieses Skript möglicherweise Ihren Computer beschädigen. Möchten Sie \ server \ scripts \ my.ps1 ausführen? [D] Nicht ausführen [R] Einmal ausführen [S] Anhalten [?] Hilfe (Standard ist "D"): d
Kann ich diese Warnung ignorieren? Der gewünschte Pseudocode, den ich möchte, ist:
PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"
quelle
-ExecutionPolicy ByPass
mein Problem behoben. Du hast mir viel googeln und Zeit gespart. Danke\\foo-files
. Das Hinzufügen des Namensfoo-files.example.com
zu vertrauenswürdigen Hosts funktionierte nicht, ich musste nur den Namen hinzufügenfoo-files
.-ExecutionPolicy
Dieser Befehl listet das Skript nur für die Instanz auf, in der es ausgeführt wird, und bietet den ausgeführten Skripten keine Hilfe. Verwenden Sie dazu die Schaltfläche "Ausführen" in PowerShell ISE. Gibt es eine Möglichkeit, dieser Datei global zu vertrauen, dass 1. dauerhaft ist - und - 2. das Skript nicht ausgeführt wird. Weitere Vorsicht ... Das Ändern der lokalen Intranetzone und / oder der vertrauenswürdigen Zonen in einer Domain kann unbeabsichtigte Nebenwirkungen auf Websites haben, deren Funktion auf bestimmten Browserfunktionen beruht. Beispielsweise kann der ActiveX-, http- und ws-Verkehr je nach Ursprung und Zone offensichtlich blockiert werden.Um Warnungen zu vermeiden, können Sie:
Set-ExecutionPolicy bypass
quelle
Wenn dieser Fehler von einem heruntergeladenen Powershell-Skript auftritt, können Sie das Skript folgendermaßen entsperren:
Klicken Sie mit der rechten Maustaste auf die
.ps1
betreffende Datei und wählen Sie EigenschaftenKlicken Sie in den Dateieigenschaften auf Blockierung aufheben
Klicken Sie auf OK
quelle
Unblock-File
scheint dies weder bei einem UNC-Pfad zu helfen, wie in der ursprünglichen Frage dargestellt, noch wird dieUnblock
Schaltfläche im Eigenschaftendialog der Datei angezeigt. IchC:\...
Weisen Sie der Umgebungsvariablen SEE_MASK_NOZONECHECKS einfach 1 zu
$env:SEE_MASK_NOZONECHECKS = 1 Start-Process $msi_file_path /qn -Wait | out-null
quelle
Start-Process
wird nicht unterstützt,-ExecutionPolicy Bypass
daher ist ein UNC-Pfad fehlgeschlagen, auch wenn die Benutzerkontensteuerung deaktiviert ist. Aber mit diesem Trick funktioniert es. Upvoting mit allen meinen Händen.Versuchen Sie dies, bearbeiten Sie die Datei mit:
notepad foo.ps1:Zone.Identifier
Und setze 'ZoneId = 0'
quelle
Unblock-File
(obwohl dieser Kommentar und diese Antwort beide nichts mit der Frage des IO zu tun haben)Unblock-File
einmal mit Version 4 sehen , aber die Problemumgehung von Zone.Identifier hat das Problem gelöst. Die Datei wurde ebenfalls auf dem Host erstellt, aber immer noch die Eingabeaufforderung mit der Systemausführungsrichtlinie 'RemoteSigned'.Nichts davon hat in meinem speziellen Fall funktioniert. Was geändert wurde, war die Änderung eines NetBIOS-Namens vom FQDN.
Anstelle von:
\\server.domain.net\file.ps1
benutze:
\\server\file.ps1
Die Verwendung des Namens umgeht die Konfiguration "Intranet-Netzwerk automatisch erkennen" im IE.
Siehe Option 1 im Blog hier: http://setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html
quelle
Ich habe dieses Powershell-Skript erstellt, um alle Dateien auf einer Freigabe auf meinem Server zu entsperren
Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % { Unblock-File -Path $_.FullName }
quelle
Unblock-File
hat in meinen Tests nicht funktioniert (Windows 10, PowerShell ISE).Sie möchten die Ausführungsrichtlinie auf Ihrem Computer mit Set-ExecutionPolicy festlegen:
Set-ExecutionPolicy Unrestricted
Möglicherweise möchten Sie die verschiedenen Ausführungsrichtlinien untersuchen, um festzustellen, welche für Sie geeignet ist.
help about_signing
Weitere Informationen finden Sie unter " ".quelle
Haben Sie das Skript aus dem Internet heruntergeladen?
Entfernen Sie dann den NTFS-Stream mit der Datei streams.exe von sysinternal in der Befehlszeile aus der Datei .
cmd> streams.exe .\my.ps1
Versuchen Sie nun erneut, das Skript auszuführen.
quelle
Unblock-File
(obwohl dieser Kommentar und diese Antwort nichts mit der Frage des IO zu tun haben)Angenommen, Sie müssen das ps-Skript aus einem freigegebenen Ordner starten
copy \\\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1
PS Googeln reduzieren)
quelle
Es ist sehr einfach, Ihre PowerShell zu öffnen und den folgenden Befehl zu schreiben, wenn Sie über eine Anzahl von ps1-Dateien verfügen. Hier müssen Sie den Pfad mit Ihrem Pfad ändern.
PS C:\Users> Get-ChildItem -Path "D:\downlod" -Recurse | Unblock-File
quelle
Versuchen Sie es mit dem Schalter "Policyname" -force-Schalter für die Ausführungspolitik, und das Popup-Fenster mit den Warnungen sollte nicht angezeigt werden.
quelle
Wenn Sie von einer bereits geladenen PowerShell-Sitzung aus auf eine Datei zugreifen möchten, verwenden Sie entweder Unblock-File , um die Datei als sicher zu markieren (obwohl Sie bereits eine entspannte Ausführungsrichtlinie festgelegt haben müssen, damit
Unrestricted
dies funktioniert), oder ändern Sie die Ausführungsrichtlinie Nur für die aktuelle PowerShell-Sitzung:quelle