модуль community.windows.psexec — выполняет команды на удалённом узле Windows на основе модели PsExec
Примечание
Этот модуль входит в коллекцию community.windows (версия 3.1.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.windows. Для использования этого модуля могут потребоваться дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: community.windows.psexec.
Краткое описание
- Выполняет удалённую команду на узле Windows с узла Linux без настройки WinRM.
- Можно запустить на контроллере Ansible для начальной настройки узлов Windows и подготовки их к работе с WinRM.
Требования
На узле, выполняющем этот модуль, необходимы следующие компоненты.
- pypsexec
- smbprotocol[kerberos] для дополнительной аутентификации Kerberos
Параметры
Параметр | Комментарии |
|---|---|
arguments строка | Аргументы, передаваемые исполняемому файлу одной строкой. |
asynchronous логический | Запускает команду как отсоединённый процесс. Модуль возвращает управление сразу после запуска процесса, который продолжает работать в фоновом режиме. Если этому параметру задано значение Параметр stdin не работает с процессами этого типа. Если этому параметру задано значение Варианты:
|
connection_password строка | Пароль для connection_user. Обязателен, если не установлены компоненты Kerberos или имя пользователя относится к локальной учётной записи узла Windows. Можно не указывать, чтобы использовать билет участника Kerberos для участника, заданного параметром connection_user, если установлена библиотека Kerberos и билет уже был получен с помощью команды |
connection_timeout целое число | Время ожидания в секундах при получении первоначального ответа сервера на согласование SMB. По умолчанию: |
connection_username строка | Имя пользователя для подключения к удалённому узлу Windows. Этот пользователь должен входить в группу Обязательно, если не установлены компоненты Kerberos или имя пользователя относится к локальной учётной записи узла Windows. Можно не указывать, чтобы использовать билет участника Kerberos по умолчанию из локального кэша учётных данных, если установлена библиотека Kerberos. Если process_username не задан, удалённый процесс будет выполняться под этой учётной записью с сетевым входом в систему. |
encrypt логический | Использует шифрование SMB для шифрования сообщений SMB, отправляемых на узел и получаемых от него. Для этого требуется протокол SMB 3, который поддерживается только в Windows Server 2012 или Windows 8. В более старых версиях, таких как Windows 7 или Windows Server 2008 (R2), необходимо задать значение Если задано значение Варианты:
|
executable строка / обязательный | Исполняемый файл, который нужно запустить на узле Windows. |
hostname строка / обязательный | Удалённый узел Windows для подключения; это может быть IP-адрес или имя узла. |
integrity_level строка | Уровень целостности процесса, если задан параметр process_username и он не равен Если задано значение Если задано значение Если задано значение Варианты:
|
interactive логический | Запускает процесс в интерактивном режиме и отображает его окно в сеансе Windows, указанном параметром interactive_session. Если этому параметру задано значение Параметр stdin не работает с процессами этого типа. Варианты:
|
interactive_session целое число | Идентификатор сеанса Windows для отображения интерактивного процесса на удалённом узле Windows. Допустимо только, если для параметра interactive задано значение По умолчанию используется По умолчанию: |
load_profile логический | Запускает удалённую команду с загруженным профилем пользователя. Варианты:
|
port целое число | Порт, на котором прослушивается удалённая служба SMB. По умолчанию: |
priority строка | Задаёт приоритет команды на узле Windows. Подробнее см. на странице https://msdn.microsoft.com/en-us/library/windows/desktop/ms683211.aspx. Варианты:
|
process_password строка | Пароль для process_username. Обязателен, если задан параметр process_username и его значение не равно |
process_timeout целое число | Ограничение времени выполнения процесса в секундах. Значение По умолчанию: |
process_username строка | Пользователь, от имени которого запускается процесс. Можно задать для запуска процесса с интерактивным входом в систему от имени указанной учётной записи, что позволяет обойти ограничения сетевого входа, который используется, если этот параметр не задан. Если параметр не указан, процесс запускается с сетевым входом в систему от имени той же учётной записи, что и connection_username. Задайте значение Если для параметра encrypt задано значение |
show_ui_on_logon_screen логический | Отображает интерфейс процесса на защищённом рабочем столе Winlogon, если параметр process_username равен Варианты:
|
stdin строка | Данные, которые передаются в канал stdin после запуска процесса. Этот параметр не действует, если для interactive или asynchronous задано значение |
working_directory строка | Изменяет рабочий каталог, заданный при запуске процесса. По умолчанию: |
Примечания
Примечание
- Для работы этого модуля на узле Windows должна быть настроена и включена служба SMB, а порт 445 должен быть открыт в брандмауэре.
- Этот модуль будет ожидать завершения процесса, если для параметра asynchronous не задано значение
yes. Во избежание бесконечного ожидания ввода убедитесь, что процесс запускается как неинтерактивная команда. - Пользователь, заданный параметром connection_username, должен входить в локальную группу «Администраторы» узла Windows. Для узлов, не присоединённых к домену, следует задать
LocalAccountTokenFilterPolicyравным1, чтобы обеспечить корректную работу. См. https://support.microsoft.com/en-us/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 строка | Подробности исключения, возникшего при попытке запуска процесса Возвращается: выполнение модуля завершилось ошибкой Пример: |
pid целое число | Идентификатор созданного асинхронного процесса Возвращается: при успешном выполнении, если asynchronous равно ‘yes’ Пример: |
rc целое число | Код возврата удалённого процесса Возвращается: при успешном выполнении, если asynchronous равно ‘no’ Пример: |
stderr строка | Поток stderr удалённого процесса Возвращается: при успешном выполнении, если interactive или asynchronous равно ‘no’ Пример: |
stdout строка | Поток stdout удалённого процесса Возвращается: при успешном выполнении, если interactive или asynchronous равно ‘no’ Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/windows/psexec_module.html