5 ответов:
использовать
Set-Variable test -option Constant -value 100или
Set-Variable test -option ReadOnly -value 100разница между "константой" и "только для чтения" заключается в том, что переменная только для чтения может быть удалена (а затем повторно создана) через
Remove-Variable test -Forceв то время как постоянная переменная не может быть удален (даже с силой).
посмотреть этой статье для более подробной информации.
вот решение для определения константы, как это:
const myConst = 42решение взято из http://poshcode.org/4063
function Set-Constant { <# .SYNOPSIS Creates constants. .DESCRIPTION This function can help you to create constants so easy as it possible. It works as keyword 'const' as such as in C#. .EXAMPLE PS C:\> Set-Constant a = 10 PS C:\> $a += 13 There is a integer constant declaration, so the second line return error. .EXAMPLE PS C:\> const str = "this is a constant string" You also can use word 'const' for constant declaration. There is a string constant named '$str' in this example. .LINK Set-Variable About_Functions_Advanced_Parameters #> [CmdletBinding()] param( [Parameter(Mandatory=$true, Position=0)] [string][ValidateNotNullOrEmpty()]$Name, [Parameter(Mandatory=$true, Position=1)] [char][ValidateSet("=")]$Link, [Parameter(Mandatory=$true, Position=2)] [object][ValidateNotNullOrEmpty()]$Mean, [Parameter(Mandatory=$false)] [string]$Surround = "script" ) Set-Variable -n $name -val $mean -opt Constant -s $surround } Set-Alias const Set-Constant
чтобы использовать определенный тип значения, скажем Int64, вы можете явно привести значение, используемое в set-variable.
например:
set-variable -name test -value ([int64]100) -option Constantчтобы проверить,
$test | gmи вы увидите, что это Int64 (а не Int32, что было бы нормально для значения 100).
использовать
-option ConstantС :Set-Variable myvar -option Constant -value 100теперь
$myvarимеет постоянное значение 100 и не могут быть изменены.
PowerShell v5. 0 должен разрешить
[static] [int] $variable = 42
[static] [DateTime] $thisday
и тому подобное.
Comments