3

PowerShell では、宣言の前に型名を付けることで、ローカル変数の型を強制できます。

[string]$MyString = 'hello'

または、 new-variable コマンドを使用してグローバル変数を作成できます

New-Variable -Name MyGlobalOption -Scope Global -Value [MyEnum]'Option1'

組み込みのグローバル変数は、その型を強制できます。

# This fails due to invalid cast to [ActionPreference]
$ErrorActionPreference = Get-Date   

ただし、自己定義のグローバル変数は次のことを行いません。

# Works just fine. And now $MyGlobalOption is invalid:
$MyGlobalOption = Get-Date

グローバル変数の型をどのように強制できますか?

4

1 に答える 1

4

次のように宣言してみてください。

[MyEnum]$global:MyGlobalOption = 'Option1'

私がこれを行う場合:

>  Set-StrictMode -Off
> [int]$global:MyGlobalOption = 1
> $MyGlobalOption = get-date
Impossibile convertire il valore "20/09/2013 18:00:18" nel tipo "System.Int32". Errore: "Cast da 'DateTime' a 'Int32'
non valido."
In riga:1 car:1
+ $MyGlobalOption = get-date
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

エラーが発生しました。問題を再現できません。

于 2013-09-20T14:47:38.037 に答える