Powershell Script mit Shortcut starten

Ein Powershell Script startet gewöhnlich nicht durch Doppelklick, sondern es muss zunächst über die Powershell Konsole aufgerufen werden oder mit einem anderen Tool wie z.B. PowerGUI. Man kann dies umgehen, indem man das Skript über einen Shortcut anspricht. Ich zeige das exemplarisch anhand eines Shortcuts auf dem Desktop, der ein Powershell Skript startet.

Ablauf

Dummy Shortcut auf dem Desktop erstellen.

PS_short01

Unter Windows7 wird man nach Ort und Name der Verknüpfung gefragt. Bei älteren Systemen wie z.B. Server 2003 wird im ersten Schritt nur nach dem Ort gefragt.

PS_short02

PS_short03

Danach erhält man zunächst eine Dummy Verknüpfung, die noch nichts mit Powershell zu tun hat.

PS_short04Wir ändern nun die Eigenschaften. Als Ziel geben wir folgenden Pfad ein:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "D:\Skripte\test.ps1"

Dabei ist es egal welche Version von Powershell auf dem System installiert ist. Der Pfad lautet immer “\v1.0\”.

Die Bypass Option ermöglicht die Ausführung des Scripts auch dann, wenn die ExecutionPolicy der Shell auf “Restricted” steht. Ist das ein Sicherheitsproblem? – Nein. Wer Rechte hat, auf einem System Scripte auszuführen, der hat ohnehin schon vollen Zugang.
PS_short05

Nach Bestätigung mit OK ändert sich das Aussehen unseres Shortcuts:

PS_short06Bei Ausführung erscheint noch das Powershell Konsolenfenster. Wer das nicht möchte kann folgenden Parameter hinzufügen:

-WindowStyle Hidden

Pre-Flight-Check vSphere 5.1

Alan Renouf, der vielen bekannt ist durch vCheck oder andere sehr nützliche Skriptsammlungen, hat jetzt einen sogenannten Fling veröffentlicht, mit dem man eine Virtuelle Infrastruktur vor dem Upgrade auf vSphere 5.1 testen kann.

preflight51_01

Das Skript kommt mit einer schönen GUI und zeigt im Vorfeld der Migration mögliche Probleme auf.

 

Links

vmware Labs – vCenter 5.1 Pre-Install Check Script

PowerCLI: Easy Migration Script

Einen Datastore leeren kann eine sehr mühsame Arbeit sein. Man kann zwar mehrere VMs gleichzeitig auswählen, aber diese müssen im selben Ressourcepool sein damit man sie gemeinsam verschieben kann. Das ganze wird zum Klickdrama. Viel schöner wäre es, wenn man diesen Vorgang mittels PowerCLI automatisieren könnte. Zu meiner Freude fand ich genau so ein Skript. Es basiert auf einer Programmierung von ict-freak.nl und wurde von Richard Yaw erweitert. Die Programmierung basiert auf der PowerCLI und wurde mit einer einfachen GUI ausgestattet.

Download

Easy Migration Tool v2.1 by Richard Yaw

Folgende vMotion Operationen können durchgeführt werden:

  • Host to Host
  • VM to Host
  • Datastore to Datastore
  • VM to Datastore

Bei der Datastore to Datastore Migration kommt als erfreulicher Nebeneffekt hinzu, daß die VMs nacheinander migriert werden und somit das Plattensubsystem nicht unnötig belasten.

Man startet das Skript über die PowerCLI. Es öffnet sich die GUI und man muß nur den vCenter Hostnamen eingeben, den Cluster auswählen und den vMotion Modus festlegen (vgl. oben).

Die Version ist schon etwas älter, funktioniert aber auch unter vSphere 5.1 noch zuverlässig.

So kann man auch größere Datastores über Nacht oder über das Wochenende leeren lassen. 🙂

Links

Skriptfehler PowerCLI

Bei der Ausführung von Powershell oder PowerCLI Skripten kann es zu einem Problem mit der Signierung kommen. Zur Laufzeit erhält man eine Meldung wie unten dargestellt.

Die Datei <name> kann nicht geladen werden. Die Datei <name> ist nicht digital signiert. Das Skript wird auf dem System nicht ausgeführt. Weitere Informationen erhalten Sie mit “Get-Help about_signing”.

bzw. für englische Ausgabe:

The file <name> cannot be loaded. The file <name> is not digitally signed. The script will not execute on the system. Please see “Get-Help about_signing” for more details.

Die kontrolle der Sicherheitseinstellungen von Powershell ergab, daß sie bereits auf “RemoteSigned” gestellt wurden.

PS C:\Users> get-executionpolicy
RemoteSigned
PS C:\Users>

Was Ist also die Ursache? Das PowerCLI Skript (ein Teil von vCheck) hatte ich kurz zuvor geladen und lokal entpackt. Öffnet man die Eigenschaften des der ps1-Datei so sieht man schnell die Ursache.

Aktiviert man den Button “Zulassen”, so ist das Skript für künftige Ausführung genehmigt und der Fehler tritt nicht mehr auf.