我正在将 vba 代码翻译为 PowerShell
PowerShell 中是否存在
with
和 endwith
?
有什么替代方案吗?
你能给我举个例子吗?
VBA
With ... End With
语句只是一种速记语法 - 请参阅 With...End With 语句 (Visual Basic):
With objectExpression
[ statements ]
End With
因此,例如这个 VBA 脚本:
With MyVar
.PropertyX = 100
.PropertyY = "myvalue"
.MyMethod()
End With
相当于这个VBA脚本:
MyVar.Property = 100
MyVar.PropertyY = "myvalue"
Myvar.MyMethod()
在 PowerShell 中简单翻译为:
$myVar.PropertyX = 100
$myVar.PropertyY = "myvalue"
$myvar.MyMethod()
但是,如果
objectExpression
是一个较长的表达式,您可以将其分配给临时变量:
With MyVar.MyProperty.MyOtherProperty
.PropertyX = 100
.PropertyY = "myvalue"
.MyMethod()
End With
在 VBA 中变成这样:
MyTempVar = MyVar.MyProperty.MyOtherProperty
MyTempVar.PropertyX = 100
MyTempVar.PropertyY = "myvalue"
MyTempVar.MyMethod()
翻译为 PowerShell 如下:
$myTempVar = $myVar.MyProperty.MyOtherProperty
$myTempVar.PropertyX = 100
$myTempVar.PropertyY = "myvalue"
$myTempVar.MyMethod()
Powershell 中的最佳替代方案:
foreach ($_ in $MyVar) {
$_.PropertyX = 100
$_.PropertyY = "myvalue"
$_.MyMethod()
}
至少我喜欢...
$MyVar | % {
$_.PropertyX = 100
$_.PropertyY = "myvalue"
$_.MyMethod()
}