PowerShell 3.0+全局变量继承机制更改
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PowerShell 3.0+全局变量继承机制更改,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1740字,纯文字阅读大概需要3分钟。
内容图文
![PowerShell 3.0+全局变量继承机制更改](/upload/InfoBanner/zyjiaocheng/1280/27867c1323414325873d1b0e6d203045.jpg)
- 在PowerShell 2.0 中,一个本地变量会继承一个同名的全局变量,在本地变量第一次更改时,会基于旧的值新建一个变量。
- 在PowerShell 3.0,4.0中,一个本地变量会继承一个同名的全局变量,在本地变量第一次更改时,会忽略旧的值,新建一个变量。
此更改,暂无官方文档。我们通过一段脚本来详细说明:MosserTest.ps1
$Global:mylist
= @(1,2)
[object]
::ReferenceEquals(
$Global:mylist
,
$mylist
)
#First Op_Addition
$mylist
+= (
New-Object
object)
"After First Op_Addition, variable mylist‘s type is "
+
$mylist
.gettype().fullName
[object]
::ReferenceEquals(
$Global:mylist
,
$mylist
)
#Second Op_Addition
$mylist
+= (
New-Object
object)
‘
$mylist
.Count={0}
‘ -f $mylist.count
‘
$Global:mylist
.Count={0}‘
-f $Global:mylist .count
|
在PowerShell 2.0 (测试机器:Windows Server 2008 R2)中:
PS> .\mossertest.ps1 True After First Op_Addition, variable mylist‘s type is System.Object[] False $mylist.Count=4 $Global:mylist.Count=2
在PowerShell 3.0+ (测试机器:Windows 8 Client 和 windows 8.1)中:
PS> .\mossertest.ps1
True
After First Op_Addition, variable mylist‘s type is System.Object
False
Method invocation failed because [System.Object] does not contain a method named ‘op_Addition‘.
At C:\Users\asttest\mossertest.ps1:11 char:1
+ $mylist += (New-Object object)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
$mylist.Count=1
$Global:mylist.Count=2
在PowerShell 3.0和4.0中,包含上述逻辑的一些老的脚本可能会运行错误(像Dell的SCOM管理包Dell.ChassisModularServer.Correlation.mp):
Method invocation failed because [System.Object] does not contain a method named ‘op_Addition’.
下面给出三个解决方案可以规避种问题:
- 和运行脚本的控制台共享作用域:
PS> . .\MosserTest.ps1 - 使用全局变量标识符:
$Global:mylist += (New-Object object) - 显式的给本地变量赋值:
$mylist=$Global:mylist
$mylist += (New-Object object)
原文:https://www.cnblogs.com/albert-/p/12699248.html
内容总结
以上是互联网集市为您收集整理的PowerShell 3.0+全局变量继承机制更改全部内容,希望文章能够帮你解决PowerShell 3.0+全局变量继承机制更改所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。