Verwendung von PowerShell- und PowerShell-Modulen im Unternehmen

8

Vor kurzem habe ich mich dem Windows-Team in meinem Unternehmen angeschlossen und mit meinem Entwicklerhintergrund (Java, .NET und Web im Allgemeinen) war ich ziemlich schnell an PowerShell interessiert. Ich kann seinen Wert gegenüber einfachen alten Batch-Dateien, VB, sehen ... deshalb möchte ich seine Verwendung fördern und nach und nach Menschen dazu bringen, sie gegenüber dem Rest zu bevorzugen, es sei denn, es gibt einen Grund, dies nicht zu tun.

Die Bereitstellung von PowerShell scheint ziemlich einfach zu sein, da wir die entsprechenden Patches in WSUS leicht genehmigen und die Ausführungsrichtlinie über das Gruppenrichtlinienobjekt für die integrierten AD-Server konfigurieren können.

Meine Fragen betreffen mehr die Verteilung und Verwendung von PowerShell- und PowerShell-Modulen (z. B. PCSX, PowerShellPack, hausgemacht, ...).

Für diejenigen unter Ihnen, die PowerShell bereits in Ihrem Unternehmen bereitgestellt haben:

  1. Haben Sie ein Standardpaket für PowerShell mit einer Reihe von Modulen, die Sie auf jedem Server bereitstellen? Wenn ja, wie stellen Sie dann neue Versionen der installierten Module bereit?

  2. Haben Sie ein zentrales PowerShell-Repository erstellt, in dem Sie alle Ihre PowerShell-Module speichern? Wenn ja, ist dieses Repository global verfügbar oder können Sie auch sekundäre Repositorys synchronisieren?

    Ich bin an Tools wie Maven, Ivy und andere Software zur Abhängigkeitsverwaltung gewöhnt, weshalb ich etwas enttäuscht bin, was PowerShell in dieser Hinsicht zu bieten hat.

    Ich habe ein sehr gefunden netter Artikel über dieses Thema und werde wahrscheinlich den gleichen Weg gehen, wie es meinen Anforderungen entspricht.

  3. Verwenden Sie WinRM? Verbinden Sie sich direkt von Arbeitsstationen oder haben Sie zentrale Verwaltungsserver? Haben Sie den Zugriff auf WinRM auf diese Verwaltungsserver beschränkt?

  4. Verwenden Sie WinRM in einer nicht verwalteten Umgebung (Server nicht in einer AD-Domäne)? Wie konfigurierst du WinRM?

    Wir haben eine Netzwerkzone, in der die Server nicht Teil einer AD-Domäne sind. Daher kann ich mich nicht auf die Kerberos-Authentifizierung für WinRM verlassen.

  5. Global, was ist Ihre Erfahrung, sind Sie mit den Ergebnissen zufrieden?

Bearbeiten: Zu Frage 2 haben wir beschlossen, ein zentrales Repository einzurichten.

Die Idee wird sein, ein Haupt-Repository zu haben, das unter Versionskontrolle (GIT) steht und zu dem wir als einzige Schreibrechte haben werden.

Von diesem Repository werden wir die Module mit einem rsync-ähnlichen Werkzeug (in unserem Fall Robocopy) zu anderen sekundären Repositories kopieren (die nur lesbare Kopien sind). Nur diese Repositories sind für die Clients zugänglich (wir müssen nur den PSModulePath auf diesen Clients aktualisieren, um sicherzustellen, dass sie auf das Repository zugreifen können).

Wir werden auch unsere Releases inszenieren, daher werden im Repository mehrere Versionen verfügbar sein: Entwicklung, Integration und Produktion.

    
dSebastien 17.03.2011, 11:07
quelle

1 Antwort

8

Lassen Sie uns jedes Problem nach Kategorie behandeln.

Evangelisation

Um das Interesse an PowerShell für Ihre Mitarbeiter zu wecken, würde ich vorschlagen, mit dem Automatismus zu beginnen. Finden Sie einen gemeinsamen Schwachpunkt, der relativ einfach zu implementieren ist (um schnell etwas vor Ihren Mitarbeitern zu finden) und automatisieren Sie ihn mit PowerShell. Dann erweitern Sie von dort.

Eine andere gute Idee ist es, einen "Script Club" in Ihrem Büro zu starten, wo Sie ein paar Schulungen durchführen und Ideen oder Probleme mit Skripten in PowerShell teilen. Sie können mit einmal alle paar Wochen beginnen und sehen, wie es geht. Bei meiner Arbeit haben wir einen Buchclub, in dem wir verschiedene technische Bücher über Testen, Design und Programmierung durchgehen, es funktioniert gut.

Verpackung

  • Module - PowerShell-Module sind die beste Form der Verpackung. Sie sind recht einfach zu bedienen und bieten einige nette Funktionen wie einfache Bereitstellung und private Variablen / Funktionen.
  • Skripte - Skripte sind eine gute Idee für Work-in-Progress oder um anzufangen, da Ihre Mitarbeiter mit Skripten sicherlich vertraut sind.

Bereitstellung

Derzeit gibt es einige Optionen für die Bereitstellung.

  • Auf jedem Computer bereitstellen - Dies kann einige Netzwerkprobleme vermeiden und bietet Ihnen mehr Flexibilität bei jedem Computer, aber der Nachteil ist, dass die Aktualisierung von Modulen mehr Probleme bereitet.
  • Zentrales Repository (eine Netzwerkfreigabe) - Sie können auch alle Ihre Module auf einer zentralen Netzwerkfreigabe speichern. Dies würde Probleme bei der Bereitstellung auf jedem Computer vermeiden und Sie können die Module schreibgeschützt machen, wenn Sie Änderungen steuern möchten. Sie müssen jedoch für jeden Computer ein Profil bereitstellen, um die Netzwerkfreigabe der Variablen $ env: PSModulePath hinzuzufügen. Es wäre am besten, dies im All-users-all-hosts-Profil einzustellen. Von diesem Zeitpunkt an sollte es nicht mehr aktualisiert werden, solange sich der Pfad nicht ändert.
  • NuGet - NuGet ist ein Open-Source-Projekt, das die Paketverwaltung in die .NET-Entwicklung einbezieht. Das Schöne daran ist die Möglichkeit, öffentliche Repositories und lokale / private Repositories zu haben. Es gibt bereits eine erste Version von PowerShell-Modul , das NuGet für PowerShell nutzt Modulbereitstellung.

Fernzugriff

Als Bauingenieur habe ich relativ wenige Maschinen und die volle Kontrolle über sie. Also habe ich Remoting aktiviert. Sie müssten einige IT-Leute um besseren Rat bitten.

    
JasonMArcher 17.03.2011 16:50
quelle