什么?你的管理员还不了解PowerShell常量和只读变量!

日期: 2016-02-17 作者:Adam Bertram翻译:朱文浩 来源:TechTarget中国 英文

许多人将程序语言中的变量定义为某值预留的存放位置,变量就是一个用来存放、取出、变更和移除值的篮子。然而,对于PowerShell变量的子集来说,可被定义为无法进行变更,这样的集被称为常量和只读变量。 常量和只读变量在功能上是一致的,通过它们可以把值赋给一个常量或一个只读变量,但不能更改。是一个常数的情况下,值也无法被移除,我们一起来看下面的例子: 假如你用PowerShell编写了脚本,你很可能采用$Variable = ‘some value.’的形式来给变量赋值。

这是惯例,也是给变量定义的常规方法。其实PowerShell还有个内置cmdlet叫做Set-Varia……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

许多人将程序语言中的变量定义为某值预留的存放位置,变量就是一个用来存放、取出、变更和移除值的篮子。然而,对于PowerShell变量的子集来说,可被定义为无法进行变更,这样的集被称为常量和只读变量。

常量和只读变量在功能上是一致的,通过它们可以把值赋给一个常量或一个只读变量,但不能更改。是一个常数的情况下,值也无法被移除,我们一起来看下面的例子:

假如你用PowerShell编写了脚本,你很可能采用$Variable = 'some value.'的形式来给变量赋值。这是惯例,也是给变量定义的常规方法。其实PowerShell还有个内置cmdlet叫做Set-Variable,也可以为变量赋值。此用法并不常见,因为$Bucket = 'Full'的写法和Set-Variable -Name 'Bucket' -Value 'Full'的赋值效果是相同的。

我创建了变量$Bucket并给他赋值Full,随后将$Bucket变量的值变更为空。但是如果我想创建一个常量呢?这种情况下,使用名为Option的附加参数的Set-Variable方法。管理员可以使用Option参数来把$Bucket变量的值赋为不可更改的'Full'。

当我试图变更$Bucket的值时,红色错误信息提示我不允许此变更。常量是无法变更或移除的。

这是常量的特性,那么只读变量的特性呢?两者的区别在于只读变量的值可被移除。

我再次使用Set-Variable方法将所有参数和参数的值设为与上次相同,只将Option的参数用值ReadOnly代替Constant。完成赋值操作后,我尝试移除该值同样被提示错误,提示会说:“如果变量是只读的,尝试Force选项”,我随即使用Force参数果然成功移除了变量的值。

然而管理员会在什么情况下优先使用常量和只读变量呢?有以下几个原因:当你有个包含着成百上千变量声明行的大脚本时会使用只读变量,也许你需要对一个服务器的重要属性进行赋值,在同一脚本内还要对其他变量进行赋值,要确保赋值过程中不会出现赋值错误的情况。如果改错了某些变量,后果可能不堪设想。只读变量会帮助你不把事情搞砸。

同样的情况也适用于常量。常量可以用来固化变量的值以防止包括故意和非故意的变更或移除变量值。也许脚本会提供给其他人,而你不希望这些变量声明被别人搞乱,此时常量就可以派上用场。

综上所述,理论上来说常量相比变量有技术上的优势。定义常量时表明你的意图更加明确。在脚本中移除某个变量的值也必须将其他因素考虑进去。如果想要追求技术上的先进性,因为不需要跟踪,常量相比变量简单的多。

作者

Adam Bertram
Adam Bertram

自由撰稿人

相关推荐