UseCompatibleCmdlets

Schweregrad: Warnung

Standardzustand: Immer aktiviert

Beschreibung

Diese Regel erkennt cmdlets, die für die PowerShell-Edition, Version und das Betriebssystem, die du anvisierst, nicht verfügbar sind. Die Regel vergleicht jedes Cmdlet in deinem Skript mit einer Kompatibilitäts-Erlaubtenliste, die mit PSScriptAnalyzer ausgeliefert wird. Diese Dateien befinden sich an folgendem Ort: /path/to/PSScriptAnalyzerModule/Settings.

Jede Datei verwendet dieses Namensformat:

<psedition>-<psversion>-<os>.json

Ort:

  • <psedition> ist Core oder Desktop
  • <psversion> ist die PowerShell-Version
  • <os> ist Windows, Linux, Linux-Arm oder MacOS

Configure rule

Um zu überprüfen, ob dein Skript mit PowerShell Core 6.1 unter Windows kompatibel ist, füge diese Konfiguration hinzu:

@{
    'Rules' = @{
        'PSUseCompatibleCmdlets' = @{
            'compatibility'      = @('core-6.1.0-windows')
        }
    }
}

Der Kompatibilitätsparameter akzeptiert eine Liste von einem oder mehreren Zielidentifikatoren, wie zum Beispiel:

  • Desktop-2.0-Windows
  • Desktop-3.0-Windows
  • Desktop-4.0-Windows (entnommen aus Windows Server 2012 R2)
  • desktop-5.1.14393.206-windows
  • core-6.1.0-Windows (übernommen aus Windows 10, Version 1803)
  • core-6.1.0-linux (aus Ubuntu 18.04)
  • core-6.1.0-linux-arm (aus Raspbian)
  • core-6.1.0-macos

Gepatchte PowerShell-Versionen enthalten in der Regel dieselben Cmdlet-Daten, daher liefert diese Regel hauptsächlich Haupt- und Nebenversionsprofile aus.

Du kannst auch ein benutzerdefiniertes Profil mit New-CommandDataFile.ps1erstellen. Legen Sie die generierte JSON-Datei in den Settings Ordner des Moduls PSScriptAnalyzer . Dann kannst du diese Datei unter Namen referenzieren compatibility.

Die core-6.0.2-* Dateien wurden in PSScriptAnalyzer 1.18 entfernt, weil PowerShell 6.0 das Lebensende erreicht hatte.

Obwohl die Regel konfigurierbar ist, ist sie immer aktiviert. Verwenden Sie eine der folgenden Methoden, um diese Regel zu vermeiden:

  • Erstellen Sie eine benutzerdefinierte Regelkonfigurationsdatei, die nur die Regeln enthält, die Sie möchten, oder lassen Sie die Regeln aus, die Sie nicht möchten.
  • Füge die entsprechenden Rule Suppression-Attribute zu deinem Code hinzu, um die Regel für bestimmte Codeblöcke zu unterdrücken. Weitere Informationen finden Sie im Abschnitt "Unterdrückende Regeln" in Using PSScriptAnalyzer.