带参数/参数的Powershell

时间:2017-09-01 20:12:25

标签: powershell macros

我需要使用Powershell执行一个单词宏。到目前为止我已经

$wd = new-object -comobject word.application 
$wd.run("PrintAll") 
$wd.quit() 

我想要做的是添加一个参数或参数,指向网络上的特定文件夹,然后将该参数传递给宏。 宏开始如下:

Public sPath
Sub PrintAll()

Dim fs, f, fc, f1
 Set fs = CreateObject("Scripting.FileSystemObject")
 Set f = fs.GetFolder(sPath)  ' Provide folder name where doc files are present
 Set fc = f.Files
 Dim FileList() As String
 Dim Cnt As Integer
 Cnt = 0
 Dim myDoc As Word.Document

我需要指向大约70个不同的文件夹位置,目标是在Word中只有1个Sub(宏),但要有单独的powershell脚本指向每个文件夹并将它们传递给一个Sub(宏)。另外,我希望Powershell中的参数将文件夹位置发送到宏中的变量sPath。

有关如何实现这一目标的任何想法?

我试过

$wd = new-object -comobject word.application 
$wd.run('PrintAll', '\\serverX\g$\xxxxxxxx') 
$wd.quit() 

但是得到错误“Argument:'2'应该是System.Management.Automation.PSReference。使用[ref]。”

1 个答案:

答案 0 :(得分:0)

好的,我已经测试过了。

1)请转到VBA环境并编写此代码(哦,上帝,这是vb6)

Public Function PrintAll(arg1 As String, arg2 As String) As String

    MsgBox arg1 + arg2

    PrintAll = arg1 + arg2 

End Function

2)转到PowerShell并编写此代码:

$word = New-Object -ComObject Word.Application
$doc = $word.Documents.Open("C:\Users\Ali\Desktop\Files\A.docx")
$arg1=[ref]"Hello"
$arg2=[ref]",Buddy"
$word.Run("PrintAll",$arg1,$arg2) # The returned value is Hello,Buddy
$doc.close()
$word.quit()