06.12.2013

PowerShell 4.0

Technical Value

oder auch Windows Management Framework 4.0 ist im Oktober diesen Jahres erschienen. Es gibt interessante neue Features.

Configuration Management

PowerShell hat seit je her immer das Potential ein Configuration Management Tool wie z.B. Puppet oder Chef zu werden. Puppet und Chef sind Enterprise Ready und erlauben die automatisierte Konfiguration von Benutzern, Rechten, Freigaben, Datenbanken, Diensten und vielem mehr. Einziges Manko bis dato, beide Tools arbeiten mit der Programmiersprache Ruby (was nicht das Manko ist) welche an und für sich Unix-Artigen Betriebssystemen viel näher steht als z.B. Windows. Dies macht sich in der Unterstützung für Microsoft Produkte bemerkbar; es gibt nur rudimentäre Unterstützung.

Was hat Puppet und Chef der PowerShell voraus? PowerShell ist eine mächtige Script-Sprache. Ruby unterdessen ist auf Windows deutlich weniger mächtig. Allerdings sind Puppet und Chef mit einer zusätzlichen deklarativen Sprache ausgestattet, die es erlaubt einen Zielzustand für Systeme zu beschreiben. Im folgenden Beispiel wird deklarativ festgelegt, dass der Dienst NTP installiert sein muss und sichergestellt wird, dass dieser auch gestartet ist. Konkret bedeutet, dass wenn der Dienst beim Anwenden der Konfiguration nicht installiert ist, dieser anschließend entsprechend eines Paket-Managers (nach)installiert und gestartet wird. Ist dieses bereits installiert und gestartet passiert nichts.

  1. class ntp {
  2.     package { "ntp":
  3.         ensure => installed
  4.     }
  5.  
  6.     service { "ntp":
  7.         ensure => running,
  8.     }
  9. }

PowerShell 4.0 bietet nun einen ähnliche Funktion, genannt PowerShell Desired State Configuration. Weitere Details gibt es auf der Technet Seite . Anbei ein Beispiel; es wird sichergestellt, dass ein bestimmte Windows Feature installiert ist, in diesem Beispiel der Web Server IIS.

  1. Configuration MyWebConfig
  2. {
  3.    # A Configuration block can have zero or more Node blocks
  4.    Node "Server001"
  5.    {
  6.       # Next, specify one or more resource blocks
  7.  
  8.       # WindowsFeature is one of the built-in resources you can use in a Node block
  9.       # This example ensures the Web Server (IIS) role is installed
  10.       WindowsFeature MyRoleExample
  11.       {
  12.           Ensure = "Present" # To uninstall the role, set Ensure to "Absent"
  13.           Name = "Web-Server"
  14.       }
  15.  
  16.       # File is a built-in resource you can use to manage files and directories
  17.       # This example ensures files from the source directory are present in the destination directory
  18.       File MyFileExample
  19.       {
  20.          Ensure = "Present"  # You can also set Ensure to "Absent"
  21.          Type = "Directory“ # Default is “File”
  22.         Recurse = $true
  23.         SourcePath = $WebsiteFilePath # This is a path that has web files
  24.         DestinationPath = "C:\inetpub\wwwroot" # The path where we want to ensure the web files are present
  25.         Requires = "[WindowsFeature]MyRoleExample"  # This ensures that MyRoleExample completes successfully before this block runs
  26.      }
  27.   }
  28. }

Execution Policy

Microsoft hat die Flüche vieler derer die PowerShell nutzen wollten erhört und die Execution Policy ab Windows Server 2012 R2 Standardmäßig auf RemoteSigned gestellt. Dies erlaubt die Ausführung lokaler Scripte, ledigliche Remote Scripte müssen signiert sein.

Fazit

Es gibt noch eine ganze Menge weitere Features die zu PowerShell 4.0 hinzugekommen sind, nachzulesen auf der Technet Seite . Die Desired State Configuration Syntax bringt die PowerSehll 4.0 meiner Meinung nach aber ein ganzes Stück vorwärts in Sachen Configuration Management.

Teilen auf

Newsletter Anmeldung

Abonnieren Sie unseren Newsletter!
Lassen Sie sich regelmäßig über alle Neuigkeiten rundum ORAYLIS und die BI- & Big-Data-Branche informieren.

Jetzt anmelden