Документ.Сравните ссылку в параметрах

#powershell #ms-word #ms-office

#powershell #ms-word #ms-office

Вопрос:

Я создаю ps-скрипт для запуска Word compare через Powershell.

Следующая строка:

 $document.Compare($ChangedFileName, [ref]"Author", [ref]$wdCompareTargetSelected, [ref]$true, [ref]$true);
  

отлично работает на большинстве систем, но для одного клиента с Office 2013 и Windows 8.1 выдает ошибку со словами:

Аргумент: ‘2’ не должен быть System.Management.Автоматизация.PSReference. Не используйте [ссылка].

Если я удалю [ref], он начнет работать на этом конкретном компьютере, но перестанет работать на другом.

Есть ли какое-либо общее решение, как заставить его работать во всех средах?

Комментарии:

1. Другие ваши клиенты используют Office 2010 или что-то в этом роде? Кроме того, нет смысла передавать ссылочные типы с [ref]

2. Вы можете удалить [ref] из всех приведенных здесь аргументов, среда выполнения сама разберется, как правильно распределить значения.

3. к сожалению, я удалил ее и получаю сообщение о том, что используйте [ref] на других компьютерах.

4. в качестве решения я решил удалить все параметры, кроме $ChangedFileName, они не являются обязательными, и я их не использую. Похоже, решение работает во всех средах.

Ответ №1:

Для Office версии 2010 и ниже

Я выяснил, что все параметры, кроме первого, являются необязательными. На самом деле для этих переменных всегда были установлены значения по умолчанию, я смог опустить их и использовать следующий код:

 $document.Compare($ChangedFileName);
  

Для Office версии 2013 и более высокого

Можно использовать и другие параметры без каких-либо проблем.