about_Language_Modes
適用対象: Windows PowerShell 4.0, Windows PowerShell 5.0
トピック
about_Language_Modes
概要
言語のモードと Windows PowerShell® セッションでのその影響について説明します。
詳細説明
Windows PowerShell セッションの言語モードは、Windows PowerShell 言語のどの要素をセッションで使用できるかを部分的に決定します。
Windows PowerShell は次の言語モードをサポートしています。
FullLanguage
ConstrainedLanguage (Windows PowerShell 3.0 に導入されました)
RestrictedLanguage
NoLanguage
言語モードとは
言語モードはセッションで許可されている言語の要素を決定します。
言語モードは、実際には、セッションの作成に使用されるセッション構成 (または「エンドポイント」) のプロパティです。特定のセッション構成を使用するすべてのセッションは、セッション構成の言語モードを持っています。
New-PSSession コマンドレットを使用して作成する PSSession、ComputerName パラメーターを使用する一時的なセッション、および Windows PowerShell を起動すると現れる既定のセッションなど、すべての Windows PowerShell セッションには言語モードがあります。
リモート セッションはリモート コンピューター上のセッション構成を使用して作成されます。セッション構成で設定される言語モードは、セッションの言語モードを決定します。PSSession のセッション構成を指定するには、セッションを作成するコマンドレットの ConfigurationName パラメーターを使用します。
言語モード
このセクションでは、Windows PowerShell セッションの言語モードについて説明します。
完全な言語 (FullLanguage)
FullLanguage 言語モードはセッションですべての言語要素を許可します。FullLanguage は、Windows RT を除くすべてのバージョンの Windows で、既定のセッションの既定の言語モードです。
制限付きの言語 (RestrictedLanguage)
RestrictedLanguage 言語モードでは、ユーザーはコマンド (コマンドレット、関数、CIM コマンド、およびワークフロー) を実行できますが、スクリプト ブロックを使用することはできません。
次の変数のみが許可されます。
$PSCulture
$PSUICulture
$True
$False
$Null。
次の比較演算子のみが許可されます。
eq (等しい)
gt (より大きい)
lt (より小さい)
代入ステートメント、プロパティ参照、およびメソッド呼び出しは許可されません。
言語なし (NoLanguage)
NoLanguage 言語モードでは、ユーザーはコマンドを実行できますが、どの言語要素も使用できません。
制約付きの言語 (ConstrainedLanguage)
ConstrainedLanguage 言語モードは、すべての Windows コマンドレットとすべての Windows PowerShell 言語要素を許可しますが、許可される型を制限します。
ConstrainedLanguage 言語モードは、Windows RT でのユーザー モード コードの整合性 (UMCI) をサポートするために設計されています。これは Windows RT でのみサポートされている言語モードですが、サポートされているすべてのシステムで使用できます。
UMCI は、Windows RT ベースのデバイスに対して、マイクロソフト署名およびマイクロソフト認定のアプリのみインストールを許可することにより、ARM デバイスを保護します。ConstrainedLanguage モードは、ユーザーが Windows PowerShell を使用して UMCI を回避つまり違反することを防ぎます。
ConstrainedLanguage モードの機能は、次のとおりです。
Windows のモジュール内のすべてのコマンドレットとその他の UMCI 承認済みのコマンドレットは完全に機能し、特に指定される場合を除き、システム リソースへの完全なアクセスを持っています。
Windows PowerShell スクリプト言語のすべての要素は許可されています。
Windows に含まれるすべてのモジュールをインポートすることが可能で、モジュールがエクスポートするすべてのコマンドはセッションで実行されます。
Windows PowerShell ワークフローでは、スクリプト ワークフロー (Windows PowerShell 言語で記述されたワークフロー) の記述と実行が可能です。XAML ベースのワークフローはサポートされていないため、「Invoke-Expression -Language XAML」の使用などにより、スクリプト ワークフローで XAML を実行することはできません。また、入れ子になったワークフローは許可されますが、ワークフローが他のワークフローを呼び出すことはできません。
Add-Type コマンドレットは署名付きのアセンブリを読み込むことはできますが、任意の C# コードまたは Win32 API を読み込むことはできません。
New-Object コマンドレットは許可されている型でのみ使用できます (下記参照)。
Windows PowerShell では許可されている型のみ使用できます (下記参照)。その他の型は許可されていません。
型の変換は許可されていますが、結果が許可されている型である場合のみです。
文字列の入力を型に変換するコマンドレットのパラメーターは、結果の型が許可されている型である場合にのみ機能します。
ToString() メソッドと許可された型の .NET メソッド (下記参照) を呼び出すことができます。その他のメソッドを呼び出すことはできません。
ユーザーは許可された型のすべてのプロパティを取得できます。ユーザーは Core 型でのみ、プロパティの値を設定できます。
次の COM オブジェクトのみが許可されています。
Scripting.Dictionary
Scripting.FileSystemObject
VBScript.RegExp
許可されている型:
ConstrainedLanguage 言語モードでは、次の型が許可されています。ユーザーはプロパティの取得、メソッドの呼び出し、およびオブジェクトのこれらの型への変換を行うことができます。
AliasAttribute
AllowEmptyCollectionAttribute
AllowEmptyStringAttribute
AllowNullAttribute
Array
Bool
byte
char
CmdletBindingAttribute
DateTime
decimal
DirectoryEntry
DirectorySearcher
double
float
Guid
Hashtable
int
Int16
long
ManagementClass
ManagementObject
ManagementObjectSearcher
NullString
OutputTypeAttribute
ParameterAttribute
PSCredential
PSDefaultValueAttribute
PSListModifier
PSObject
PSPrimitiveDictionary
PSReference
PSTypeNameAttribute
Regex
SByte
string
SupportsWildcardsAttribute
SwitchParameter
System.Globalization.CultureInfo
System.Net.IPAddress
System.Net.Mail.MailAddress
System.Numerics.BigInteger
System.Security.SecureString
TimeSpan
UInt16
UInt32
UInt64
セッション構成の言語モードの検索
セッション構成ファイルを使用してセッション構成が作成されると、セッション構成は LanguageMode プロパティを持ちます。LanguageMode プロパティの値を取得することによって、言語モードを特定できます。
PS C:\>(Get-PSSessionConfiguration -Name Test).LanguageMode
FullLanguage
その他のセッション構成では、セッション構成を使用して作成されるセッションの言語モードを検索することにより、言語モードを間接的に特定できます。
セッションの言語モードの検索
セッション状態の LanguageMode プロパティの値を取得することによって、FullLanguage または ConstrainedLanguage セッションの言語モードを検索できます。
たとえば、次のように入力します。
PS C:\>$ExecutionContext.SessionState.LanguageMode
ConstrainedLanguage
ただし、RestrictedLanguage および NoLanguage 言語モードでのセッションでは、プロパティ値を取得するのにドット メソッドを使用できません。代わりに、エラー メッセージにより、言語モードが明らかになります。
RestrictedLanguage セッションで $ExecutionContext.SessionState.LanguageMode コマンドを実行すると、Windows PowerShell は PropertyReferenceNotSupportedInDataSection および VariableReferenceNotSupportedInDataSection エラー メッセージを返します。
PropertyReferenceNotSupportedInDataSection:
制限付きの言語のモードまたは Data セクションで、プロパティ参照は許可されていません。
VariableReferenceNotSupportedInDataSection
制限付きの言語モードまたは Data セクションで参照できない変数が参照されています。
NoLanguage セッションで $ExecutionContext.SessionState.LanguageMode コマンドを実行すると、Windows PowerShell は ScriptsNotAllowed エラー メッセージを返します。
ScriptsNotAllowed
構文がこの実行空間でサポートされていません。言語なしのモードが原因である可能性があります。
キーワード
about_ConstrainedLanguage
about_FullLanguage
about_NoLanguage
about_RestrictedLanguage
関連項目
about_Session_ConfigurationFiles
about_Session_Configurations
about_Windows_RT