是否可以使用with和endwith指令?

问题描述 投票:0回答:3

我正在将 vba 代码翻译为 PowerShell

PowerShell 中是否存在

with
endwith

有什么替代方案吗?

你能给我举个例子吗?

powershell
3个回答
2
投票

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()

0
投票

Powershell 中的最佳替代方案:

foreach ($_ in $MyVar) {
    $_.PropertyX = 100
    $_.PropertyY = "myvalue"
    $_.MyMethod()
}

至少我喜欢...


0
投票
$MyVar | % {
    $_.PropertyX = 100
    $_.PropertyY = "myvalue"
    $_.MyMethod()
}
© www.soinside.com 2019 - 2024. All rights reserved.