Das man an der Kommandozeile nahezu keine selbst- oder Fremdgebauten PS-Scripts ausführen kann hat sich mittlerweile herumgesprochen. Das kaum ein Admin seine kleinen Helferchen einzeln und bei jeder Änderung signieren wird ist ebeso offensichtlich.
Umso ärgerlicher, als das der Script-aktive Admin ab und an über den doppelten Boden der Powershell-Ausführungsverhinderung stolpert. Trotz der ExecutionPolicy ohne Restriktionen:
Set-ExecutionPolicy Unrestricted
gibt es doch weiterhin Scriptausführungsverhinderungen die sich in deutlich nicht-aussagekräftigen Fehlermeldung an der Kommandozeile und ISE bemerkbar machen:
… an der Shell:
PS C:scripts> .format-c.ps1 Sicherheitswarnung Führen Sie ausschließlich vertrauenswürdige Skripts aus. Skripts aus dem Internet können zwar nützlich sein, stellen jedoch auch eine potenzielle Gefahr für Ihren Computer dar. Möchten Sie "C:scriptsformat-c.ps1" ausführen? [N] Nicht ausführen [M] Einmal ausführen [H] Anhalten [?] Hilfe (Standard ist "N"):
Automatisierungen jeder Art sind so offensichtlich undurchführbar und auch das deutlichste „Als Stapelverarbeitungsauftrag anmelden“ Recht verpufft an diesem Scriptverhüterli wirkungslos.
Lösung
Seit Windows 8 und dem zugehörigen Server 2012 gibt es im Dateisystem ein magisches Flag, das die (telepatisch festgestellte) Herkunft des Scripts als lokal oder „Siebter Kreis der Hölle“ markiert. Das Flag lässt sich mit einem Klick auf „Zulassen“ in den Dateieigenschaften wie für die lokale Ausführung erwartet zulassen.
Selbstverständlich ist der Vorgang irreversibel, denn die telepatischen Fähigkeiten von Windows sind über jeden Zweifel erhaben. Die Anwesenheit des Flags lässt sich durch kopieren/einfügen beibehalten, durch Snippletkopiererei (ein TOTAL ungewöhnlicher Vorgang beim scripten) reproduzieren und nicht automatisiert beheben.
Vielen Dank für den Beitrag…das erspart mir zumindest die stundenlange Fehlersuche…
…ich könnte K…krämpfe kriegen! Mal sehen, was passiert, wenn ich das Script zuvor lokal zwischenkopiere…ich wette, Windows erkennt auch das (immerhin ist es ja mit dem Keimling des Bösen gleichzusetzen)…
Ich will XP zurück!
Ja, lokal gespeicherte (bzw. angelegte) Scripte bekommen das ‚local‘ flag automatisch; auch wenn diese aus der „lokales Intranet“ Zone mit entsprechenden einstellungen kommen.
Pingback: Powershell Fehler „0x80131515″ beim laden von Modulen (Import-Module) | ugg.li
Danke für den Tipp, kleiner Hinweis am Rande: Windows 7 kennt das auch bereits.