Выполнить / вызвать локальный файл ps1, используя winrm

У меня была эта проблема в течение нескольких дней. Выполнено и исследовано все, что касается выполнения сценария powershell на локальном компьютере с использованием winrm.

Моя цель - выполнить эти сценарии ps1 с моего локального компьютера на целевой удаленной машине. winrm уже настроен и работает со своими основными командами, но я не могу найти ничего, чтобы запустить скрипт powershell (*.ps1) с использованием winrm.

что-то вроде

winrm {execute ps1 file} -r:http://<IPaddress>:5985 -auth:basic -u:'username' -p:'password' -encoding:utf-8

Любая помощь и предложения очень ценятся.

Спасибо вам, ребята!

1 ответ

Решение

Прежде всего - я считаю, что вы пытаетесь использовать winrs не winrm - последний используется для настройки winrm обычно, первый для запуска удаленных команд.

Имея это в виду: я уверен, что вам придется передать скрипт в powershell.exe и позаботиться о экранировании элементов команд. Примеры, которые работали для меня (не основной аутентификации, но это не имеет значения, я думаю):

winrs -r:ComputerName powershell -file c:\temp\test.ps1
winrs -r:ComputerName powershell -file "c:\temp\test with space.ps1"

Я думаю, почему кто-то хочет сделать это таким образом? Любая веская причина, по которой вам предлагается перейти: powershell -> native command -> cmd.exe на удаленный компьютер и -> вызвать PowerShell удаленно?

Делая это так, вы теряете

  • любой разумный вывод (вы получите текст)
  • потоки
  • сохранение состояния после запуска скрипта
  • производительность (вы создаете новый экземпляр powershell с каждым вызовом

Вы получаете:

  • сложность
Другие вопросы по тегам