{"id":526,"date":"2010-02-24T15:40:38","date_gmt":"2010-02-24T10:40:38","guid":{"rendered":"http:\/\/www.borncity.com\/blog\/2010\/02\/24\/powershell-skripte-lassen-sich-nicht-ausfhren\/"},"modified":"2020-05-19T13:27:57","modified_gmt":"2020-05-19T11:27:57","slug":"powershell-skripte-lassen-sich-nicht-ausfhren","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2010\/02\/24\/powershell-skripte-lassen-sich-nicht-ausfhren\/","title":{"rendered":"PowerShell-Skripte lassen sich nicht ausf&uuml;hren"},"content":{"rendered":"<p>Wenn Benutzer unter Windows 7 mit der Windows-PowerShell experimentieren wollen, m\u00fcssen Sie feststellen, dass die Skriptausf\u00fchrung verweigert wird. Auch mir fiel die Kinnlade herunter, als Windows 7 die Ausf\u00fchrung meines ersten PS1-Skripts verweigert und darauf hin wies, dass diese Funktion deaktiviert sei. Also habe ich recherchiert und eine L\u00f6sung gefunden, die nicht nur f\u00fcr Windows 7, sondern auch f\u00fcr Windows 8\/8.1 verwendbar ist.<\/p>\n<p><!--more--><\/p>\n<p>Komischerweise findet sich im Web da nix \u2013 die erste Fassung dieses Blogbeitrags wurde recht fix von Google ganz vorne in den Trefferlisten aufgef\u00fchrt. Entweder habe ich etwas ganz gravierendes \u00fcbersehen, und jedem anderen Anwender ist das Verhalten klar. Oder in Windows 7 wurden die Ausf\u00fchrungsrichtlinien f\u00fcr PowerShell-Skripte gegen\u00fcber fr\u00fcheren Fassungen der PowerShell (erstmals auf <em>Set-ExecutionPolicy Restricted<\/em>) ge\u00e4ndert.<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ssl-vg03.met.vgwort.de\/na\/42027585bbc9428f8342e6dbdb8d5ff3\" alt=\"\" width=\"1\" height=\"1\" \/><\/p>\n<p><strong>Hintergrund der Geschichte<\/strong><\/p>\n<p>Als ich zum ersten Mal ein PowerShell-Skript ausf\u00fchren wollte, verweigert Windows die Ausf\u00fchrung von .ps1-Skriptdateien (z. B. \u00fcber den Kontextmen\u00fcbefehl <em>Mit PowerShell ausf\u00fchren<\/em>). Auch in der PowerShell IDE-Entwicklungsumgebung erschien eine in roter Schrift gestaltete Fehlermeldung beim Ausf\u00fchren eines .ps1-Skriptprogramms. Die Meldung enthielt den Hinweis, dass die Datei nicht geladen werden konnte, weil die Skriptausf\u00fchrung auf dem System deaktiviert sei. Ein paar PowerShell-B\u00fccher, die ich auf die Schnelle konsultierte, lieferten da keinerlei Hinweise. Aber mit etwas Suchen in den PowerShell-Befehlen bzw. mittels der Hilfe der PowerShell konnte ich aber recht schnell eine L\u00f6sung f\u00fcr das Problem finden.<\/p>\n<p><strong>PowerShell-Skriptausf\u00fchrung generell freigeben<\/strong><\/p>\n<p>Um Skriptdateien der PowerShell ausf\u00fchren zu k\u00f6nnen, m\u00fcssen Sie deren Ausf\u00fchrung zulassen. \u00d6ffnen Sie das Eingabefenster der Windows PowerShell \u00fcber den Kontextmen\u00fcbefehl <em>Als Administrator ausf\u00fchren<\/em> und tippen Sie dann den Befehl<\/p>\n<p><em>Set-ExecutionPolicy Unrestricted<\/em><\/p>\n<p>ein. Anschlie\u00dfend bet\u00e4tigen Sie die Nachfrage \u00fcber die (J)-Taste. Der Ansatz ist zwar eine Art Holzhammer-Methode, um die Skriptausf\u00fchrung vollst\u00e4ndig frei zu geben. Aber zum Ausprobieren auf einem lokalen System durchaus zu gebrauchen (gibt halt schnelle Resultate).<\/p>\n<p><strong>So wird die Skriptausf\u00fchrung nur eingeschr\u00e4nkt<\/strong><\/p>\n<p>Sie k\u00f6nnen auch (siehe Abschnitt <a href=\"https:\/\/web.archive.org\/web\/20120926031448\/http:\/\/www.msxfaq.de:80\/code\/powershell.htm\" target=\"_blank\" rel=\"noopener noreferrer\">Powershell signieren und Execution Policy<\/a>) auch den Befehl:<\/p>\n<p><em>Set-ExecutionPolicy <span style=\"text-decoration: line-through;\">Allsigned<\/span> <\/em><em>RemoteSigned<\/em><\/p>\n<p>verwenden. Mit dieser h\u00f6heren Sicherheitsstufe (gegen\u00fcber \"Unrestricted\") wird eine Ausf\u00fchrung lokaler PS1-Skripte (die von einem vertrauensw\u00fcrdigen Autor erstellt wurden) erm\u00f6glicht. Die Skriptdateien brauchen also nicht signiert zu sein. Nur wenn Skriptdateien aus dem Internet heruntergeladen werden und f\u00fcr die entsprechende Sicherheitszone klassifiziert sind, wird die Skriptausf\u00fchrung verweigert.<\/p>\n<blockquote dir=\"ltr\" style=\"margin-right: 0px;\">\n<p style=\"background-color: #ffffd0;\"><strong>Anmerkung:<\/strong> Mit dem Modus \"RemoteSigned\" habe ich mich hier ziemlich ins Knie geschossen. In meiner Testumgebung funktionierten lokale PowerShell-Skriptprogramme zuerst nicht. Die PowerShell ISE brach die Ausf\u00fchrung der Skriptbeispiele mit dem Hinweis ab, dass das Skript nicht signiert sei. Dies war f\u00fcr mich auf den ersten Blick in keinster Weise erkl\u00e4rbar, hatte ich die Beispieldateien f\u00fcr meine Magnum-Tricks-B\u00fccher doch ein paar Wochen vorher im Editor der PowerShell ISE erstellt und dann lokal gespeichert.<\/p>\n<p style=\"background-color: #ffffd0;\">Erst als ich auf die Idee kam, die Skriptdatei mit der rechten Maustaste anzuklicken, den Kontextmen\u00fcbefehl <em>Eigenschaften<\/em> zu w\u00e4hlen und dann auf der Registerkarte <em>Allgemein <\/em>die Schaltfl\u00e4che <em>Zulassen <\/em>anzuklicken, klappte die Skriptausf\u00fchrung. Also war bei den .ps1-Dateien in meinem Beispielordner die Kennung f\u00fcr die Internetzone gesetzt. Im Nachhinein habe ich eine Erkl\u00e4rung gefunden: Ich hatte die Skripte auf einem anderen Rechner entwickelt und bin sp\u00e4ter auf eine neue Maschine umgezogen. Durch das Kopieren der Dateien \u00fcber das Netzwerk wurde nat\u00fcrlich die Zonenkennung von lokaler Maschine auf Internetzone umgesetzt. Also hat die Sicherheitseinstellung ihren Dienst getan.<\/p>\n<p style=\"background-color: #ffffd0;\">In weiteren Versuchen habe ich dann noch herausgefunden, dass auch die Aktualisierung der Sicherheitskennung zwischen Windows-Shell und PowerShell ISE nicht so optimal l\u00e4uft. Wurde die Kennung f\u00fcr die Internetzone \u00fcber die Schaltfl\u00e4che <em>Zulassen <\/em>angeklickt, lie\u00df sich die Skriptdatei zwar \u00fcber den Kontextmen\u00fcbefehl <em>Mit PowerShell ausf\u00fchren <\/em>starten. Aber die Ausf\u00fchrung in der PowerShell ISE klappte erst, nachdem ich die ISE beendet, neu gestartet und dann die PS1-Datei erneut geladen hatte. Alles ziemlich verzwickt.<\/p>\n<\/blockquote>\n<hr \/>\n<p><strong>Wenn's ganz sicher sein soll<\/strong><\/p>\n<p>Wer es ganz sicher haben will (z. B. in Serverumgebungen), kann die ExecutionPolicy \u00fcber den Befehl:<\/p>\n<p><em>Set-ExecutionPolicy <span style=\"text-decoration: line-through;\">RemoteSigned<\/span> Allsigned<\/em><\/p>\n<p>auf\u00a0<em>AllSigned<\/em> setzen. Dann sind nur PS1-Dateien ausf\u00fchrbar, die digital signiert sind.<\/p>\n<p>Wer sich mit Sicherheitsfragen in Verbindung mit der Skriptausf\u00fchrung unter PowerShell befassen m\u00f6chte, sei auf die unter Links genannten Fundstellen [2] und [3] verwiesen. Unter [5, 6, 7] finden Sie Artikel, die das Signieren von PowerShell-Code beschreiben.<\/p>\n<p><strong>Falls der Zugriff auf die Registrierung scheitert<\/strong><\/p>\n<p>In den Microsoft Windows 7-Foren gibt es Anwender [4], bei denen der Zugriff auf den Registrierungsschl\u00fcssel mit der Richtlinie mit einer Fehlermeldung<\/p>\n<p><em>Set-ExecutionPolicy : Access to the registry key<br \/>\n'HKEY_LOCAL_MACHINE\\SOFTWARE\\<br \/>\nMicrosoft\\PowerShell\\1\\ShellIds\\Microsoft.PowerShell'<br \/>\nis denied.<br \/>\n<\/em><br \/>\nabbricht. In diesem Fall fehlt der betreffende Registrierungseintrag. \u00d6ffnen Sie die Registrierung im Registrierungseditor und navigieren Sie zum Schl\u00fcssel:<\/p>\n<p><em>HKLM\\SOFTWARE\\Microsoft\\PowerShell\\1\\ShellIds\\Microsoft.PowerShell <\/em><\/p>\n<p>Anschlie\u00dfend f\u00fcgen Sie den Wert (REG_SZ) mit dem Namen <em>ExecutionPolicy<\/em> ein und setzen diesen auf \"RemoteSigned\". Dies erfordert administrative Berechtigungen. Danach l\u00e4sst sich in der PowerShell Konsole mit <em>Get-ExecutionPolicy<\/em> pr\u00fcfen, ob es geklappt hat.<\/p>\n<p><strong>Links:<br \/>\n<\/strong>[1] <a href=\"https:\/\/borncity.com\/blog\/2009\/11\/24\/windows-7-bucher\/\">Windows 7-B\u00fccher<\/a><br \/>\n[2] <a href=\"http:\/\/technet.microsoft.com\/de-de\/magazine\/2008.01.powershell.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Windows PowerShell \u2013 abwehren von sch\u00e4dlichem Code<\/a><br \/>\n(\u00e4lterer Artikel zu Monad)<br \/>\n[3] <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms537361(VS.85).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Introduction to Code Signing<\/a><br \/>\n[4] Microsoft Windows 7-Forum<br \/>\n[5] <a href=\"http:\/\/www.hanselman.com\/blog\/SigningPowerShellScripts.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Signing PowerShell Scripts<\/a><br \/>\n[6] Signing PowerShell Scripts \u2013 Automatically<br \/>\n[7] <a href=\"http:\/\/technet.microsoft.com\/de-de\/magazine\/2008.04.powershell.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Technet-Artikel zum Script-Signing<\/a><br \/>\n[8] <a href=\"http:\/\/technet.microsoft.com\/de-de\/library\/ee176961.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Technet-Artikel zum Cmdlet \"Set-ExecutionPolicy\"<\/a><\/p>\n<p>Weitere Infos zu Windows 7 finden sich in meinen <a href=\"https:\/\/borncity.com\/blog\/2009\/11\/24\/windows-7-bucher\/\" target=\"_self\" rel=\"noopener noreferrer\">Windows 7-Tricks-Titeln<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Benutzer unter Windows 7 mit der Windows-PowerShell experimentieren wollen, m\u00fcssen Sie feststellen, dass die Skriptausf\u00fchrung verweigert wird. Auch mir fiel die Kinnlade herunter, als Windows 7 die Ausf\u00fchrung meines ersten PS1-Skripts verweigert und darauf hin wies, dass diese Funktion &hellip; <a href=\"https:\/\/borncity.com\/blog\/2010\/02\/24\/powershell-skripte-lassen-sich-nicht-ausfhren\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[4311,263,150,4294],"class_list":["post-526","post","type-post","status-publish","format-standard","hentry","category-problemlosung","tag-powershell","tag-set-executionpolicy","tag-skriptausfuhrung","tag-windows-7"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=526"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/526\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}