Skript Organisation (alle meine Funktionen sind unübersichtlich mein Skript)
Habe ich ein großes Skript, welches ich jetzt Aufräumen mit der Verwendung von Funktionen.
Aber, ich habe festgestellt, dass, es wird ein bisschen chaotisch, Sie alle setzen an der Spitze von dem script.. ich habe Blättern Vergangenheit Hunderte von Linien des codes zu bekommen, um das Skript selbst..
Wie macht Ihr Jungs halten Sie Ihre Skripte aufgeräumt? Sie haben Ihre Funktionen in einer separaten Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen #Region und #EndRegion
Wenn Sie PowerGUI Skript-editor Sie können Regionen wie diese:
Wenn Sie öffnen Sie das Skript in PowerGUI Skript editor der Regionen reduziert werden, so dass Sie nicht scrollen müssen, um an die Hauptplatine. Dies auch funktioniert in Microsoft ISE. Nicht alle Skript-Editoren die Ehre-region-tags wenn.
Versuchen, dot-sourcing oder importieren als Modul
Andere Weise zu externalisieren, Ihre Funktionen entweder in ein anderes Skript und tun, was man dot sourcing
. C:\myfunctions.ps1
oder legen Sie Sie in eine Modul-Datei, benannt mit einem.psm1
Erweiterung und NutzungImport-Module
.Eine nützliche Technik ist, um Ihre gesamte Skript in eine Funktion:
Mir ist nur aufgefallen, dass diese Frage markiert
powershell
, während das obige Beispiel ist für Bourne. Die Technik ist wohl gültig, aber die syntax kann abweichen.powershell
.Versuchen Module
Die Technik, die wir eingeführt haben, um alle unsere Funktionen geladen, die über ein script-Modul. Wir erstellt einen Ordner für alle einzelnen Funktion Dateien und weiter unterteilt in die entsprechenden Kategorien. Sobald wir das getan haben erstellen wir einen
.psm1
Datei zu sagen, das Modul was geladen und dann fügen Sie den Modul-Pfad, um unsere PowerShell-Profil (wenn nicht im Standard-Modul, Position).Ordner-Struktur
.psm1-Datei
Modul-Namen.psm1 (befindet sich unter einem Ordner mit dem gleichen Namen - Erforderlich)
Profil-Datei
Microsoft.PowershellISE_profile.ps1 /Microsoft.Powershell_profile.ps1
Den obigen code bedeutet, dass Sie nicht haben, um speichern Sie das Modul in der gleichen Lage wie der rest (nützlich, in unserem Fall, da wir verwenden SVN-version und teilen unsere Sachen mit unserem team).
Rückblick
Zur Erinnerung:
Wir das Präfix der "ps1" - Dateien mit "func_", so dass, wenn die tab-Vervollständigung den Namen der Funktion, wenn es im selben Verzeichnis wie die Datei, wird Sie nicht bekommen, verwirrt. Darüber hinaus fügen wir den Namespace (Firma, Initialen, etc.) vor, so dass unsere Funktion Namen nicht kollidieren mit anderen Funktionen Hinzugefügt.
Handy neu laden-Funktion
Einen weiteren nützlichen Tipp, das könnte in handliches kommen während der Entwicklung ist die Definition eines alias, "reload" in unserem Fall, das wird zwingen, das Modul zu laden. Dies bedeutet, dass, sobald Sie haben eine Datei geändert, alles, was Sie tun müssen ist, geben, und es werden Punkt-Source-in-memory-wieder mit Ihren änderungen.
Der Grund, warum ich "int_" statt unseres normalen Namensschema ist, dass diese Funktion befindet sich in unserem Profil und ich sehe es als interne und nicht eine vollständige geblasen-Funktion.
Ich hoffe, dies gibt Ihnen einige gute Ideen, es hat Super geklappt bei uns so weit!!!
-Adam
Eine Sache, vorsichtig zu sein, ist Umfang. Das wird nicht funktionieren:
Load-Funktionen Funktion wird über einen eigenen Rahmen, und die Funktionen, die es erstellt wird, existieren nur im lokalen Bereich. Sie wird verschwunden sein, wenn die Funktion abgeschlossen ist und der Rahmen entsorgt wird.
Müssen Sie diese im lokalen Bereich durch die dot-sourcing-Funktionen wie:
(Beachten Sie, dass es ein Leerzeichen zwischen dem Punkt und dem Funktionsnamen.)
Es wird funktionieren, wenn
main
wird nicht ausgeführt, im lokalen Bereich, aber wenn Sie Argumente an das Skript, das Sie tun müssen, die für Sie zu verwenden$args
im Skriptbereich.Andere mögliche Lösung ist das aufteilen der Funktionen in separate Dateien und in einem Paket als Modul. Dann können Sie einfach importieren Sie das Modul in das main-Skript.
Sie am Ende mit eine Anzahl von .ps1-Datei, aber es macht die Verwaltung (und Prüfung) der jeweiligen Funktion viel einfacher.
Webcast auf, wie dies zu tun (es ist 1/2 in):
[http://powershell.com/cs/media/p/8773.aspx][1]
[1]: http://powershell.com/cs/media/p/8773.aspx
Es enthält auch ein handy-Modul für die Herstellung von Modulen.