Модуль 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, когда это значение установлено в Параметр stdin не работает с этим типом процессов. Значение возврата rc не устанавливается, когда это Варианты:
|
connection_password строка | Пароль для connection_user. Требуется, если требования Kerberos не установлены или имя пользователя — локальная учётная запись на хосте Windows. Можно опустить, чтобы использовать билет Kerberos principal для принципала, заданного connection_user, если библиотека Kerberos установлена и билет уже получен с помощью команды |
connection_timeout целое число | Время ожидания в секундах при получении начального ответа SMB negotiate от сервера. Значение по умолчанию: |
connection_username строка | Имя пользователя для подключения к удалённому хосту 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), должны установить это значение в При установке в Варианты:
|
executable строка / обязательно | Исполняемый файл для запуска на хосте Windows. |
hostname строка / обязательно | Удаленный хост Windows для подключения, может быть IP-адресом или именем хоста. |
integrity_level строка | Уровень целостности процесса, когда process_username определен и не равен Когда Когда Когда Варианты:
|
interactive логическое значение | Запустит процесс как интерактивный процесс, который отображает окно процесса сеанса Windows, указанного в interactive_session. Значения stdout и stderr будут равны null, когда это значение установлено в Параметр stdin не работает с этим типом процессов. Варианты:
|
interactive_session целое число | Идентификатор сеанса Windows, используемый при отображении интерактивного процесса на удалённом хосте Windows. Это допустимо только когда interactive равно Значение по умолчанию — Значение по умолчанию: |
load_profile логическое значение | Запускает удалённую команду с загруженным профилем пользователя. Варианты:
|
port целое число | Порт, на котором прослушивается удалённая служба SMB. Значение по умолчанию: |
priority строка | Устанавливает приоритет команды на хосте Windows. См. https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms683211.aspx для получения дополнительных сведений. Варианты:
|
process_password строка | Пароль для process_username. Требуется, если process_username определён и не |
process_timeout integer | Время ожидания выполняемого процесса в секундах. Значение По умолчанию: |
process_username string | Пользователь, от имени которого будет выполняться процесс. Это позволяет запустить процесс под интерактивным логином указанной учетной записи, что обходит ограничения, применяемые к сетевому логину, если он не указан. Если опущено, процесс выполняется под той же учетной записью, что и connection_username, с использованием сетевого логина. Установите значение Если encrypt имеет значение |
show_ui_on_logon_screen boolean | Показывает пользовательский интерфейс процесса на защищенном рабочем столе Winlogon, когда process_username имеет значение Варианты:
|
stdin string | Данные, которые будут отправлены в канал stdin после запуска процесса. Этот параметр не действует, когда interactive или asynchronous имеют значение |
working_directory string | Изменяет рабочую директорию при запуске процесса. По умолчанию: |
Примечания
Примечание
- Для работы данного модуля на хосте 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 | Подробности любой ошибки при попытке выполнения процесса Возвращаемое значение: модуль завершился с ошибкой Пример: |
pid integer | Идентификатор процесса асинхронного процесса, который был создан Возвращаемое значение: успех и asynchronous равно ‘да’ Пример: |
rc integer | Код возврата удалённого процесса Возвращаемое значение: успех и asynchronous равно ‘нет’ Пример: |
stderr string | stderr удалённого процесса Возвращаемое значение: успех и interactive или asynchronous равно ‘нет’ Пример: |
stdout string | stdout удалённого процесса Возвращаемое значение: успех и interactive или asynchronous равно ‘нет’ Пример: |
Ссылки на коллекцию
© 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