Я пытаюсь использовать Invoke-RestMethod в сценарии PowerShell в Runbook Orchestrator 2012 R2. Когда я запускаю модуль Runbook, он сообщает мне:
Термин «Invoke-RestMethod» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, проверьте правильность пути и повторите попытку.
Если я скопирую и вставлю строку из действия в консоль PowerShell на сервере Runbook, она будет работать должным образом. В документация для Invoke-RestMethod говорит мне, что это было введено в .NET v3. В документация для "Запустить .Net Script" говорит:
Это действие совместимо с .NET CLR версии 2.0 и новее.
IIRC, .NET 3 был следующим после .NET 2, поэтому я предполагаю, что это утверждение означает, что он должен поддерживать как минимум командлеты .NET 3 PowerShell. Может ли кто-нибудь пролить свет на то, почему это не работает для меня?
PS: Когда я использую Invoke REST Service из пакета интеграции REST, он возвращает данные с кавычками вокруг возвращаемой строки, что означает, что мне нужно добавить еще одно действие после него, чтобы удалить кавычки, что я и делаю как обходной путь. Я бы предпочел иметь одну дополнительную строку в существующем скрипте, чем добавлять два дополнительных действия для достижения того же результата.
Похоже, что Orchestrator по умолчанию использует только PowerShell v2. Это можно изменить с помощью взлома реестра: http://www.scsm.se/?p=1458 Я сделал это на своем сервере, и у меня это работает.