PowerShell是否支持常量?

我想在PowerShell中声明一些整数常量。

有没有什么好的方法来做到这一点?

使用

Set-Variable test -option Constant -value 100 

要么

 Set-Variable test -option ReadOnly -value 100 

“常量”和“只读”之间的区别在于,只读variables可以通过通过删除(然后重新创build)

 Remove-Variable test -Force 

而一个常量variables不能被删除(即使使用-Force)。

有关更多详细信息,请参阅此TechNet文章 。

这里是定义一个像这样的常量的解决scheme:

 const myConst = 42 

解决scheme取自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 

Set-Variable cmdlet使用-option Constant

 Set-Variable myvar -option Constant -value 100 

现在$myvar的值是100,不能修改。

要使用特定types的值(如Int64),可以明确地转换设置variables中使用的值。

例如:

 set-variable -name test -value ([int64]100) -option Constant 

去检查,

 $test | gm 

你会发现它是一个Int64(而不是Int32,这对于数值100来说是正常的)。

PowerShell v5.0应该允许

[静态] [INT] $variables= 42

[静态] [date时间] $今天

等等。