Saltstack
  • Willkommen
  • Einführung
  • Testumgebung
    • Salt-Master öffentlicher FQDN
  • Salt installieren
    • Minions und Master "verheiraten"
  • Salt Module
    • Beispiel Benutzer anlegen
    • Dateien hin und her kopieren
  • Salt States
    • Yaml verstehen
    • Editoren anpassen
    • Beispiel Benutzer verwalten
    • Abhängigkeiten
    • Dateien editieren
    • Shell Kommandos
    • Beispiel Caddy Webserver
  • Linter
  • Minions adressieren
    • Grains
    • Hostgruppen - Node Groups
  • Jinja
    • Beispiel Caddy PHP
  • top.sls
  • Output
  • Pillars
    • Hosts Pillars
    • GPG
    • Vault
    • Datenbanken
    • Beispiel Benutzerverwaltung
  • Salt-Mine
  • Eigene Module erstellen
  • Orchestrierung
  • Returner & Job-Cache
  • Salt SSH
  • Salt API
  • Salt Cloud
    • Hinweise und Fallen
    • KVM und Libvirt
    • Scaleway
    • Digitalocean
    • Hetzner Cloud
    • eigene Deploymentscripte
    • Dynamische Portforwarding
    • Keys automatisch aufräumen
    • Start Aktionen
  • GIT
    • Alternative CD
  • Salt Reactor
  • Salt für Windows
    • Software ohne Repository installieren
    • PowerShell
    • Chocolatey Paktemanager
    • Lokales Logon Skript
    • Software Repository
  • Beispiele
    • Restic Backup
    • Apache Web-Proxy
    • Wartungstunnel
    • Unattended Upgrades
  • Salt & Etcd
  • Salt ACS
Powered by GitBook
On this page
  • Module
  • State
  • Mehrzeilige PowerShell Script in States
  1. Salt für Windows

PowerShell

PowerShell in Modulen (ad-hoc Kommandos) und States verwenden

PreviousSoftware ohne Repository installierenNextChocolatey Paktemanager

Last updated 5 months ago

Module

Per Standard für Salt Kommandos, welche mit cmd.run „losgeschickt“ werden mit cmd.exe aus. Sie können entweder aus cmd.exe PowerShell aufrufen, oder die Shell Variable ändern. Siehe Beispiele:

salt '*' cmd.run 'powershell -Command "Get-Date"'
salt '*' cmd.run 'Get-Date' shell=powershell
salt '*' cmd.powershell 'Get-Date'
salt '*' cmd.run '$(Get-ComputerInfo).CsModel' shell=powershell

State

Wenn Sie in einem State ein PowerShell Script ausführen möchten, müssen Sie ebenfalls die Variable shell auf powershell setzen.

/src/salt/windows/pow.sls
script:
  file.managed:
    - name: 'C:\Windows\Temp\reboot.ps1'
    - contents: |
        sleep 10
        Restart-Computer -Force

reboot:
  cmd.run:
    - name: Start-Process -NoNewWindow -FilePath "powershell" -ArgumentList "reboot.ps1" -WorkingDirectory "C:\Windows\temp"
    - shell: powershell
    - env:
      - ExecutionPolicy: bypass
    - user: Administrator

Mehrzeilige PowerShell Script in States

Wenn Sie einen State auf einem Linux-System erstellen, versteht die PowerShell den Zeilenumbruch nicht. Ein State wie der Nachfolgende würde nur das erste Kommando auf der PowerShell ausführen und die Restlichen ignorieren.

script:
  cmd.run:
    - name: |
        Get-Date
        Write-Host "Hallo Salt"
        Get-Date
        Write-Host "Hallo Salt"
    - shell: powershell
script:
  cmd.run:
    - name: >-
        Get-Date;
        Write-Host "Hallo Salt";
        Get-Date;
        Write-Host "Hallo Salt";
    - shell: powershell

Dieses Problem können Sie umschiffen, indem die mit dem Yaml-Operator >- "" alles auf eine Zeile bringen lassen und dann explizit das Semikolon zum Abtrennen der Kommandos angeben.

Folded Blocks
Verschiedene PowerShell Optionen