Оператор With в коде VBS, как это выражено в PowerShell - PullRequest
0 голосов
/ 05 июня 2019

Существует ли программное обеспечение или инструмент, который может быстро преобразовать код VBS в код PowerShell?

Кроме того, я хочу знать следующее выражение With в коде VBS, как выразить его в PowerShell?

Оператор With хорош, он может сократить код, могу ли я реализовать аналогичные функции в PowerShell?

Я нашел код PowerShell очень лаконичным, мне очень любопытно узнать, чтокод выше, как использовать самый короткий код PowerShell для достижения той же функциональности.

'declare and instaciate wrdApp
Dim wrdApp: Set wrdApp = WScript.CreateObject("Word.Application")
'declare wrdDoc
Dim wrdDoc
Dim wdReplaceAll

'Open the document
Set wrdDoc = wrdApp.Documents.Open("c:\test.docx")

'set the value for the replace "constant"
wdReplaceAll = 2

wrdDoc.Select

With wrdApp.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "WordToReplace"
    .Replacement.Text = "ReplaceWith"
    .Forward = True
    .Wrap = 1
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
'the Replace argument is the 11'th argument 
    .Execute , , , , , , , , , , wdReplaceAll
End With

'save the document and close Word
wrdDoc.SaveAs2 "c:\test-ok.docx"
wrdApp.Quit

'clean up
Set wrdApp = Nothing
Set wrdDoc = Nothing

1 Ответ

1 голос
/ 05 июня 2019

PowerShell не имеет эквивалента для оператора VBScript With.Вместо

With wrdApp.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    ...
End With

вы, вероятно, сделаете что-то вроде этого:

$find = $wrdApp.Selection.Find
$find.ClearFormatting()
$find.Replacement.ClearFormatting()
...

или как это:

$wrdApp.Selection.Find | ForEach-Object {
    $_.ClearFormatting()
    $_.Replacement.ClearFormatting()
    ...
}

Кроме того, насколько мне известно, нетVBScript или VBA для компилятора PowerShell.Я собрал несколько заметок о том, как преобразовать код VBA в PowerShell .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...