#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 и более высокого
Можно использовать и другие параметры без каких-либо проблем.