Freigeben über


PSScriptAnalyzer-Regeln und Empfehlungen

Die folgenden Richtlinien stammen aus einem kombinierten Aufwand sowohl aus dem PowerShell-Team als auch aus der Community. Die Richtlinien sind nach Typ organisiert. Innerhalb jedes Typs gibt es eine Liste von Regeln. Die Regeln werden nach der Schweregrad- gruppiert, die in der Implementierung der PSScriptAnalyzer Regel definiert ist. Die angegebene TBD Schwerestufe bedeutet "Noch zu bestimmen." Gegenstände, die als TBD gekennzeichnet sind, sind Empfehlungen, die derzeit keine festgelegten Regeln haben.

Cmdlet-Entwurfsregeln

Schweregrad: Fehler

Es wurden keine Regeln definiert.

Schweregrad: Warnung

Schweregrad: Informationen

Es wurden keine Regeln definiert.

Schweregrad: TBD

  • Unterstützen Sie Force Parameter für interaktive Sitzungen. Wenn Ihr Cmdlet interaktiv verwendet wird, stellen Sie immer einen Force Parameter bereit, um die interaktiven Aktionen außer Kraft zu setzen, z. B. Eingabeaufforderungen oder Lesezeilen der Eingabe. Der Force-Parameter ist wichtig, weil er es ermöglicht, dein Cmdlet in nicht-interaktiven Skripten und Hosts zu verwenden.
  • Dokumentausgabeobjekte
  • Modul muss ladebar sein
  • Keine Syntaxfehler
  • Nicht aufgelöste Abhängigkeiten sind ein Fehler.
  • Abgeleitet von den Cmdlet- oder PSCmdlet-Klassen
  • Angeben des Cmdlet-Attributs
  • Außerkraftsetzen einer Eingabeverarbeitungsmethode
  • Angeben des OutputType-Attributs
  • Schreiben einzelner Datensätze in die Pipeline
  • Groß-/Kleinschreibung bei Cmdlets berücksichtigen und Groß-/Kleinschreibung beibehalten

Skriptfunktionen

Schweregrad: Fehler

Es wurden keine Regeln definiert.

Schweregrad: Warnung

Schweregrad: Informationen

Es wurden keine Regeln definiert.

Schweregrad: TBD

  • Vermeiden der Verwendung von Clear-Host
  • Vermeiden der Verwendung von UNC-Dateipfaden
  • Fehlerbehandlung
    • Verwenden von -ErrorAction Stop beim Aufrufen von Cmdlets
    • Verwenden Sie $ErrorActionPreference Set to Stop oder Continue beim Aufrufen von Noncmdlets
    • Vermeiden der Verwendung von Flags zur Behandlung von Fehlern
    • Vermeiden der Verwendung von $?
    • Vermeiden des Testens einer Nullvariablen als Fehlerbedingung
    • Kopieren von $Error[0] in ihre eigene Variable
  • Vermeiden der Verwendung von Pipelines in Skripts
  • Wenn ein Rückgabetyp deklariert wird, muss das Cmdlet diesen Typ zurückgeben. Wenn ein Typ zurückgegeben wird, muss ein Rückgabetyp deklariert werden.

Skriptformatvorlage

Schweregrad: Fehler

Es wurden keine Regeln definiert.

Schweregrad: Warnung

Schweregrad: Informationen

Schweregrad: TBD

  • Bereitstellen von Verwendungsbeispielen
  • Verwenden des Abschnitts "Notizen" für Details zur Funktionsweise des Tools
  • Jeder exportierte Befehl sollte Hilfe (einschließlich Parameterdokumentation) haben.
  • Dokumentieren Sie die Version von PowerShell, für die das Skript geschrieben wurde
  • Einzug des Codes
  • Vermeiden von Backticks

Skriptsicherheit

Schweregrad: Fehler

Schweregrad: Warnung

Schweregrad: Informationen

Es wurden keine Regeln definiert.

Schweregrad: TBD

  • Vermeiden Sie die Initialisierung von API-Schlüssel- und Zugangsdaten (Informationsoffenlegung)

Schweregrad: Fehler

Schweregrad: Warnung

Es wurden keine Regeln definiert.

Schweregrad: Informationen

  • Die folgenden drei Empfehlungen werden von der regel ReturnCorrectTypesForDSCFunctions abgedeckt.
    • Vermeiden Sie das Zurückgeben eines Objekts aus einer Set-TargetResource- oder Set-Funktion (Class Based)
    • Zurückgeben eines booleschen Werts aus einer Test-TargetResource- oder Testfunktion (Class Based)
    • Zurückgeben eines Objekts aus einer Get-TargetResource- oder Get-Funktion (Class Based)
  • DSC-Ressourcen sollten DSC-Tests DSCTestsPresent
  • DSC-Ressourcen sollten DSC-Beispiele DSCExamplesPresent

Schweregrad: TBD

  • Für Windows PowerShell v4 sollten Ressourcenmodule für jede Ressource eine .psd1 und-Datei schema.mof enthalten
  • Ressourcenmodule sollten über eine .psd1 Datei (immer) verfügen und schema.mof (für ressourcenfremde Ressourcen) siehe Problem Nr. 116
  • Das Ressourcenmodul sollte einen DscResources-Ordner haben, der die Ressourcen enthält – siehe Ausgabe #130
  • MOFs sollten eine Beschreibung für jedes Element haben – siehe Problem Nr. 131
  • Verwenden von ShouldProcess- für eine Set DSC-Methode

Referenzen