Назад | Перейти на главную страницу

Выполнение удаленных команд на целевой машине через WinRM в среде рабочей группы

Я с нетерпением жду возможности запускать специальные команды на целевой машине в моей локальной сети (рабочая группа, без присоединения к домену).

Машины были ранее настроены с Enable-PSremoting и т. д., чтобы допускать удаленное управление Windows, чтобы мы могли выполнить команду на целевой машине следующим образом.

Команды работают нормально, за исключением того, что если я хочу запустить некоторые специальные команды, такие как start-process, они не выполняются как локальный компьютер.

Например, если я запускаю на своем локальном компьютере:

> Start-Process -Filepath "cmd.exe"

он запускает процесс cmd. Если я сделаю это удаленно, вот так

Invoke-Command -Computername "my-target-ip" -ScriptBlock {Start-Process -Filepath "cmd.exe"} -Credential get-credential

Окно cmd не выполняется на целевой машине.

Это позволило бы мне установить некоторые специальные пакеты на моих целевых машинах, которые требуют некоторых конфигураций графического интерфейса autoit и которые нельзя просто сделать через PowerShell, например, приостановить обновления и настроить стандартные приложения браузера через графический интерфейс. В противном случае некоторые нормальные конфигурации работают нормально (настройки брандмауэра, запись файлов, включение сетевых конфигураций и т. Д.)

Большое спасибо.

Invoke-Command предназначен для неинтерактивных команд. IIRC, вы не получите интерактивного приглашения, используя его, и, конечно же, если вы хотите запустить программу на удаленном компьютере, она должна существовать там до того, как вы ее запустите.

Если вы хотите использовать интерактивный сеанс на удаленном компьютере, вам следует использовать Enter-PSSession вместо:

Enter-PSSession -Computer "remote" -Credential (Get-Credential)

Внутри этого сеанса вы сможете запустить командную строку, если она вам действительно нужна.

Если вам нужно запустить ряд связанных команд, которые не являются интерактивными, New-PSSession может быть интересен командлет вместе с Invoke-Command -Session $session.