Читать книгу PowerShell 7 und Windows PowerShell - Tobias Weltner - Страница 66
Weitere PowerShell-Einschränkungen
ОглавлениеIn Unternehmen sollen Macht und Missbrauchspotenzial der PowerShell mitunter eingeschränkt werden. Ob Sie solchen Einschränkungen augenblicklich unterliegen, findet der folgende Befehl für Sie heraus:
PS> $ExecutionContext.SessionState.LanguageMode
FullLanguage
Wenn der LanguageMode auf FullLanguage eingestellt ist, stehen Ihnen alle PowerShell-Funktionalitäten zur Verfügung. Wird hier hingegen ConstrainedMode angezeigt, wird Ihr System von Sicherheitssoftware wie Windows Defender Application Control, Software Restriction Policy, AppLocker oder einfachen Gruppenrichtlinien eingeschränkt.
Der Hauptzweck des ConstrainedMode ist, die PowerShell auf offizielle Befehle zu beschränken und zu verhindern, dass PowerShell allzu kreativ direkt auf Systembibliotheken des .NET Framework zugreift.
Wenn Sie mögen, können Sie eine PowerShell-Instanz testweise manuell in den eingeschränkten ConstrainedMode schalten, der dann allerdings für die gesamte weitere Laufzeit dieser Power-Shell-Sitzung gilt (also bis Sie sie schließen).
Sobald der Modus aktiv ist, dürfen nur noch Befehle ausgeführt werden, aber keine direkten Zugriffe auf das .NET Framework:
# PowerShell einschränken:
PS> $ExecutionContext.SessionState.LanguageMode = "Constrained"
# Befehle funktionieren weiterhin:
PS> Get-Date
Mittwoch, 16. Dezember 2020 11:50:07
# Direkte .NET-Zugriffe sind nun verboten:
PS> [Console]::Beep()
InvalidOperation: Cannot invoke method. Method invocation is supported only on core types in this
language mode.
Welche umfangreichen Einschränkungen im ConstrainedMode und den übrigen Sprachmodi der PowerShell gelten, fasst der Artikel unter https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_language_modes zusammen.