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时间] $今天
等等。