PowerShell 4.0
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.
- class ntp {
- package { "ntp":
- ensure => installed
- }
- service { "ntp":
- ensure => running,
- }
- }
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.
- Configuration MyWebConfig
- {
- # A Configuration block can have zero or more Node blocks
- Node "Server001"
- {
- # Next, specify one or more resource blocks
- # WindowsFeature is one of the built-in resources you can use in a Node block
- # This example ensures the Web Server (IIS) role is installed
- WindowsFeature MyRoleExample
- {
- Ensure = "Present" # To uninstall the role, set Ensure to "Absent"
- Name = "Web-Server"
- }
- # File is a built-in resource you can use to manage files and directories
- # This example ensures files from the source directory are present in the destination directory
- File MyFileExample
- {
- Ensure = "Present" # You can also set Ensure to "Absent"
- Type = "Directory“ # Default is “File”
- Recurse = $true
- SourcePath = $WebsiteFilePath # This is a path that has web files
- DestinationPath = "C:\inetpub\wwwroot" # The path where we want to ensure the web files are present
- Requires = "[WindowsFeature]MyRoleExample" # This ensures that MyRoleExample completes successfully before this block runs
- }
- }
- }
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.
Neuen Kommentar schreiben