none
PSSesssion RRS feed

  • Frage

  • Hallo zusammen,

    hab eine kurze Frage an euch Powershell-Profis:

    hab mir ein Script gebastelt, wo man auf Win10 Maschinen remote Programme auslesen/deinstallieren kann.

    $PC = Read-Host -Prompt "Bitte PC-Namen eingeben"
    $Session = New-PSSession $PC

    Invoke-Command -Session $Session -scriptblock {
    $SW = Read-Host -Prompt "Bitte Software eingeben"
    Get-Package *$SW*

    IF ($Errorlevel -eq "1")
    {
    echo Keine installiert
    exit
    }
    else
    {
    echo Installiert
    }
    }

    jedoch funktioniert das mit dem Errorlevel nicht. Was mache ich falsch? das Script wird natürlich noch erweitert

    Freitag, 11. August 2017 06:03

Antworten

  • $LASTEXITCODE beinhaltet nur die Exit Codes für Win32 Applikationen nicht für Powershell Cmdlets.

    Alternative dazu z. B. mit Try Catch arbeiten:

    try {
        Get-Package "$SW"
    } catch {
        Write-Output "Nicht installiert"
    }

    oder aber auch per If Abfrage:

    $Package = Get-Package "$SW" -ErrorAction SilentlyContinue
    If ($Package -ne $null) {
        Write-Output "Installiert"
    } Else {
        Write-Output "Nicht installiert"
    }

    Als zusätzliche Anmerkung, der Name Parameter von Get-Package nimmt keine Wildcards an, sondern setzt automatisch die Wildcards. Daher

    Get-Package "*$SW*"

    in 

    Get-Package "$SW"

    ändern. Siehe https://docs.microsoft.com/de-de/powershell/module/PackageManagement/Get-Package?view=powershell-5.0#name

    Gruß Olaf


    Freitag, 11. August 2017 07:44

Alle Antworten