Spec-Zone.ru › Ansible

Модуль community.windows.psexec – Выполнение команд на удалённом хосте Windows на основе модели PsExec

Примечание

Этот модуль входит в коллекцию community.windows (версия 2.3.0).

У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить её установку, выполните ansible-galaxy collection list.

Для её установки используйте: ansible-galaxy collection install community.windows. Для использования этого модуля необходимы дополнительные требования, подробнее см. Требования.

Для использования в плейбуке укажите: community.windows.psexec.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Описание

  • Выполняет удалённую команду с хоста Linux на хост Windows без предварительной настройки WinRM.
  • Может быть запущен на контроллере Ansible для подготовки хостов Windows к работе с WinRM.

Требования

Ниже приведены требования, необходимые на хосте, который выполняет этот модуль.

  • pypsexec
  • smbprotocol[kerberos] для необязательной аутентификации Kerberos

Параметры

Параметр

Комментарии

arguments

строка

Любые аргументы в виде одной строки для запуска исполняемого файла.

asynchronous

логическое значение

Запустит команду как отдельный процесс, и модуль вернётся сразу после запуска процесса, а процесс продолжит выполняться в фоновом режиме.

Значения stdout и stderr будут равны null, когда это значение установлено в yes.

Параметр stdin не работает с этим типом процессов.

Значение возврата rc не устанавливается, когда это yes

Варианты:

  • false ← (по умолчанию)
  • true

connection_password

строка

Пароль для connection_user.

Требуется, если требования Kerberos не установлены или имя пользователя — локальная учётная запись на хосте Windows.

Можно опустить, чтобы использовать билет Kerberos principal для принципала, заданного connection_user, если библиотека Kerberos установлена и билет уже получен с помощью команды kinit ранее.

connection_timeout

целое число

Время ожидания в секундах при получении начального ответа SMB negotiate от сервера.

Значение по умолчанию: 60

connection_username

строка

Имя пользователя для подключения к удалённому хосту Windows.

Этот пользователь должен быть членом группы Administrators хоста Windows.

Требуется, если требования Kerberos не установлены или имя пользователя — локальная учётная запись на хосте Windows.

Можно опустить, чтобы использовать билет Kerberos principal по умолчанию в кэше локальных учетных данных, если библиотека Kerberos установлена.

Если process_username не указан, то удалённый процесс будет выполняться под Network Logon под этой учётной записью.

encrypt

логическое значение

Использовать шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с него.

Это требует протокол SMB 3, который поддерживается только Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это значение в no и использовать без шифрования.

При установке в no, пакеты находятся в открытом виде и могут быть видны любому, прослушивающему сеть. Все параметры процесса также включены в это.

Варианты:

  • false
  • true ← (по умолчанию)

executable

строка / обязательно

Исполняемый файл для запуска на хосте Windows.

hostname

строка / обязательно

Удаленный хост Windows для подключения, может быть IP-адресом или именем хоста.

integrity_level

строка

Уровень целостности процесса, когда process_username определен и не равен System.

Когда default, уровень целостности по умолчанию, основанный на настройках системы.

Когда elevated, команда будет запущена с правами администратора.

Когда limited, команда будет принудительно запущена без прав администратора.

Варианты:

  • "limited"
  • "default" ← (по умолчанию)
  • "elevated"

interactive

логическое значение

Запустит процесс как интерактивный процесс, который отображает окно процесса сеанса Windows, указанного в interactive_session.

Значения stdout и stderr будут равны null, когда это значение установлено в yes.

Параметр stdin не работает с этим типом процессов.

Варианты:

  • false ← (по умолчанию)
  • true

interactive_session

целое число

Идентификатор сеанса Windows, используемый при отображении интерактивного процесса на удалённом хосте Windows.

Это допустимо только когда interactive равно yes.

Значение по умолчанию — 0, что соответствует консольному сеансу хоста Windows.

Значение по умолчанию: 0

load_profile

логическое значение

Запускает удалённую команду с загруженным профилем пользователя.

Варианты:

  • false
  • true ← (по умолчанию)

port

целое число

Порт, на котором прослушивается удалённая служба SMB.

Значение по умолчанию: 445

priority

строка

Устанавливает приоритет команды на хосте Windows.

См. https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683211.aspx для получения дополнительных сведений.

Варианты:

  • "above_normal"
  • "below_normal"
  • "high"
  • "idle"
  • "normal" ← (по умолчанию)
  • "realtime"

process_password

строка

Пароль для process_username.

Требуется, если process_username определён и не System.

process_timeout

integer

Время ожидания выполняемого процесса в секундах.

Значение 0 означает отсутствие таймаута.

По умолчанию: 0

process_username

string

Пользователь, от имени которого будет выполняться процесс.

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

Если опущено, процесс выполняется под той же учетной записью, что и connection_username, с использованием сетевого логина.

Установите значение System, чтобы запустить процесс от имени встроенной учетной записи SYSTEM. Для этой учетной записи пароль не требуется.

Если encrypt имеет значение no, имя пользователя и пароль передаются как простая строка байтов, зашифрованная с помощью XOR, без шифрования. Для получения имени пользователя и пароля не требуется специальных инструментов, достаточно знать протокол.

show_ui_on_logon_screen

boolean

Показывает пользовательский интерфейс процесса на защищенном рабочем столе Winlogon, когда process_username имеет значение System.

Варианты:

  • false ← (по умолчанию)
  • true

stdin

string

Данные, которые будут отправлены в канал stdin после запуска процесса.

Этот параметр не действует, когда interactive или asynchronous имеют значение yes.

working_directory

string

Изменяет рабочую директорию при запуске процесса.

По умолчанию: "C:\\Windows\\System32"

Примечания

Примечание

  • Для работы данного модуля на хосте Windows необходима настройка и включение SMB, а порт 445 должен быть открыт в брандмауэре.
  • Модуль будет ожидать завершения процесса, если asynchronous не равно yes. Убедитесь, что процесс запускается как неинтерактивная команда, чтобы избежать бесконечного ожидания ввода.
  • connection_username должен быть членом локальной группы администраторов на хосте Windows. Для хостов, не входящих в домен, необходимо установить LocalAccountTokenFilterPolicy в значение 1, чтобы обеспечить корректную работу. См. https://support.microsoft.com/ru-ru/help/951016/description-of-user-account-control-and-remote-restrictions-in-windows.
  • Дополнительную информацию о данном модуле и различных требованиях к хосту см. на странице https://github.com/jborean93/pypsexec.

См. также

См. также

ansible.builtin.raw

Выполнение низкоуровневой и грязной команды.

ansible.windows.win_command

Выполнение команды на удалённом узле Windows.

community.windows.win_psexec

Выполнение команд (удаленно) от имени другого (привилегированного) пользователя.

ansible.windows.win_shell

Выполнение команд оболочки на целевых узлах.

Примеры

- name: Run a cmd.exe command
  community.windows.psexec:
    hostname: server
    connection_username: username
    connection_password: password
    executable: cmd.exe
    arguments: /c echo Hello World

- name: Run a PowerShell command
  community.windows.psexec:
    hostname: server.domain.local
    connection_username: username@DOMAIN.LOCAL
    connection_password: password
    executable: powershell.exe
    arguments: Write-Host Hello World

- name: Send data through stdin
  community.windows.psexec:
    hostname: 192.168.1.2
    connection_username: username
    connection_password: password
    executable: powershell.exe
    arguments: '-'
    stdin: |
      Write-Host Hello World
      Write-Error Error Message
      exit 0

- name: Run the process as a different user
  community.windows.psexec:
    hostname: server
    connection_user: username
    connection_password: password
    executable: whoami.exe
    arguments: /all
    process_username: anotheruser
    process_password: anotherpassword

- name: Run the process asynchronously
  community.windows.psexec:
    hostname: server
    connection_username: username
    connection_password: password
    executable: cmd.exe
    arguments: /c rmdir C:\temp
    asynchronous: true

- name: Use Kerberos authentication for the connection (requires smbprotocol[kerberos])
  community.windows.psexec:
    hostname: host.domain.local
    connection_username: user@DOMAIN.LOCAL
    executable: C:\some\path\to\executable.exe
    arguments: /s

- name: Disable encryption to work with WIndows 7/Server 2008 (R2)
  community.windows.psexec:
    hostanme: windows-pc
    connection_username: Administrator
    connection_password: Password01
    encrypt: false
    integrity_level: elevated
    process_username: Administrator
    process_password: Password01
    executable: powershell.exe
    arguments: (New-Object -ComObject Microsoft.Update.Session).CreateUpdateInstaller().IsBusy

- name: Download and run ConfigureRemotingForAnsible.ps1 to setup WinRM
  community.windows.psexec:
    hostname: '{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'
    connection_username: '{{ ansible_user }}'
    connection_password: '{{ ansible_password }}'
    encrypt: true
    executable: powershell.exe
    arguments: '-'
    stdin: |
      $ErrorActionPreference = "Stop"
      $sec_protocols = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::SystemDefault
      $sec_protocols = $sec_protocols -bor [Net.SecurityProtocolType]::Tls12
      [Net.ServicePointManager]::SecurityProtocol = $sec_protocols
      $url = "https://github.com/ansible/ansible-documentation/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
      Invoke-Expression ((New-Object Net.WebClient).DownloadString($url))
      exit
  delegate_to: localhost

Возвращаемые значения

Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:

Ключ

Описание

msg

string

Подробности любой ошибки при попытке выполнения процесса

Возвращаемое значение: модуль завершился с ошибкой

Пример: "Received exception from remote PAExec service: Failed to start \"invalid.exe\". The system cannot find the file specified. [Err=0x2, 2]"

pid

integer

Идентификатор процесса асинхронного процесса, который был создан

Возвращаемое значение: успех и asynchronous равно ‘да’

Пример: 719

rc

integer

Код возврата удалённого процесса

Возвращаемое значение: успех и asynchronous равно ‘нет’

Пример: 0

stderr

string

stderr удалённого процесса

Возвращаемое значение: успех и interactive или asynchronous равно ‘нет’

Пример: "Error [10] running process"

stdout

string

stdout удалённого процесса

Возвращаемое значение: успех и interactive или asynchronous равно ‘нет’

Пример: "Hello World"

Авторы

  • Jordan Borean (@jborean93)

Ссылки на коллекцию

  • Система отслеживания задач
  • Репозиторий (источники)
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/windows/psexec_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API