PS 脚本 [ref] 在某些计算机上有效,但在其他计算机上无效

PS 脚本 [ref] 在某些计算机上有效,但在其他计算机上无效

我为我支持的一家公司编写了一个 powershell 脚本(我说编写,当然是指从互联网上收集了大部分内容并对其进行了修改)。它显示一个文件夹选择器,您可以选择一个包含 word 文档的文件夹,它会将它们转换为 PDF,并保留名称。我在 W10 上编写并测试了这一切,当我将它部署给几个使用 W7 的用户时,它出现了问题。我将他们的 PS 版本升级到 4,在第一台电脑上,问题解决了,它运行完美。在第二台电脑上,更新后,它开始抱怨这一行

 $doc.saveas([ref] $path, [ref] $wdFormatPDF)

内容如下:

Argument: '1' should not be a System.Management.Automation.PSReference. Do 
not use [ref].
At C:\Users\----\Desktop\word2pdf.ps1:50 char:2
+  $doc.saveas([ref] $path, [ref] $wdFormatPDF)
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : RefArgumentToNonRefParameterMsg

它说不要使用 [ref],所以我将其删除,然后它就可以正常工作了。

$doc.saveas($path, $wdFormatPDF)

转到第三个并带上新修改的脚本,更新 PS,现在我得到了相反的消息:

Argument: '1' should be a System.Management.Automation.PSReference. Use [ref].

将其添加回去就可以正常工作了。

我的问题是这到底是怎么回事?我对 PS 还不熟悉,但我做过一些其他编程,而且我知道通过引用和通过值传递 var 之间的区别。

答案1

我一发布它,就想到了可能的答案。我检查了一下,果然需要引用的两个是 Office 2010,不需要引用的是 2007。

相关内容