web-dev-qa-db-ja.com

制約付き言語モードはデフォルトで有効になっていますか?

Powershellで制約付き言語モードはデフォルトで有効になっていますか?最新のWindows 10 FCUビルド、最新

3
Aoi. T_015

__PSLockdownPolicy環境変数を使用してこれを制御することもできます。値が0の場合はFullLanguageになり、値が4の場合はConstrainedLanguageにシフトします。

3
user871300

いいえ、プロパティを設定するだけで、PowerShellセッションを制約付き言語モードにすることができます。

PS C:\> $ExecutionContext.SessionState.LanguageMode
FullLanguage

PS C:\> $ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"

PS C:\> $ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage


PS C:\> [System.Console]::WriteLine("Hello")

Cannot invoke method. Method invocation is supported only on core types in this language mode.
At line:1 char:1
+ [System.Console]::WriteLine("Hello")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodInvocationNotSupportedInConstrainedLanguage

詳細については、次の公式ドキュメントをご覧ください:PowerShell制約付き言語とは? https://blogs.msdn.Microsoft.com/powershell/2017/11/02/powershell-constrained-language-mode/

5
Waka