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 回答