win_shell – Выполнение команд оболочки на целевых хостах
Новая версия 2.2.
Описание
- Модуль
win_shellпринимает имя команды, за которым следует список аргументов, разделенных пробелами. Он похож на модуль win_command, но выполняет команду через оболочку (по умолчанию PowerShell) на целевом хосте. - Для целевых хостов, не являющихся Windows, используйте модуль shell.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| chdir путь | Устанавливает указанный путь как текущий рабочий каталог перед выполнением команды | |
| creates путь | Путь или шаблон фильтра пути; если указанный путь существует на целевом хосте, задача будет пропущена. | |
| executable путь | Изменяет оболочку, используемую для выполнения команды (например, cmd).Целевая оболочка должна принимать параметр /c, за которым следует исходная командная строка для выполнения. | |
| free_form строка / обязательно | Модуль win_shell принимает команду в свободном формате для выполнения.Нет параметра с именем 'free form'. Обратите внимание на примеры! | |
| no_profile булево добавлен в 2.8 |
| Не загружать профиль пользователя перед выполнением команды. Это применимо только при использовании PowerShell в качестве исполняемого файла. |
| removes путь | Путь или шаблон фильтра пути; если указанный путь не существует на целевом хосте, задача будет пропущена. | |
| stdin строка добавлен в 2.5 | Установить stdin команды непосредственно на указанное значение. |
Примечания
Примечание
- Если вы хотите безопасно и предсказуемо выполнить исполняемый файл, лучше использовать модуль win_command вместо этого. Лучшие практики при написании playbooks будут заключаться в использовании win_command, если явно не требуется
win_shell. При выполнении произвольных команд используйте свой здравый смысл. - WinRM не вернётся из выполнения команды, пока не завершатся все дочерние процессы. Поэтому нельзя использовать
win_shellдля запуска дочерних или фоновых процессов длительного выполнения. Рассмотрите возможность создания службы Windows для управления фоновыми процессами.
См. также
См. также
- psexec – Выполнение команд на удалённом хосте Windows на основе модели PsExec
- Официальная документация по модулю psexec.
- raw – Выполнение низкоуровневой и грязной команды
- Официальная документация по модулю raw.
- script – Выполнение локального скрипта на удалённом узле после его передачи
- Официальная документация по модулю script.
- shell – Выполнение команд оболочки на целевых узлах
- Официальная документация по модулю shell.
- win_command – Выполнение команды на удалённом узле Windows
- Официальная документация по модулю win_command.
- win_psexec – Выполнение команд (удалённо) от имени другого (привилегированного) пользователя
- Официальная документация по модулю win_psexec.
Примеры
# Execute a command in the remote shell; stdout goes to the specified
# file on the remote.
- win_shell: C:\somescript.ps1 >> C:\somelog.txt
# Change the working directory to somedir/ before executing the command.
- win_shell: C:\somescript.ps1 >> C:\somelog.txt chdir=C:\somedir
# You can also use the 'args' form to provide the options. This command
# will change the working directory to somedir/ and will only run when
# somedir/somelog.txt doesn't exist.
- win_shell: C:\somescript.ps1 >> C:\somelog.txt
args:
chdir: C:\somedir
creates: C:\somelog.txt
# Run a command under a non-Powershell interpreter (cmd in this case)
- win_shell: echo %HOMEDIR%
args:
executable: cmd
register: homedir_out
- name: Run multi-lined shell commands
win_shell: |
$value = Test-Path -Path C:\temp
if ($value) {
Remove-Item -Path C:\temp -Force
}
New-Item -Path C:\temp -ItemType Directory
- name: Retrieve the input based on stdin
win_shell: '$string = [Console]::In.ReadToEnd(); Write-Output $string.Trim()'
args:
stdin: Input message
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| cmd строка | всегда | Команда, выполненная задачей. Пример: rabbitmqctl join_cluster rabbit@master |
| delta строка | всегда | Время выполнения команды. Пример: 0:00:00.325771 |
| end строка | всегда | Время завершения выполнения команды. Пример: 2016-02-25 09:18:26.755339 |
| msg булево | всегда | Изменено. Пример: True |
| rc целое число | всегда | Код возврата команды (0 означает успех). |
| start строка | всегда | Время начала выполнения команды. Пример: 2016-02-25 09:18:26.429568 |
| stderr строка | всегда | Стандартная ошибка команды. Пример: ls: cannot access foo: Нет такого файла или каталога |
| stdout строка | всегда | Стандартный вывод команды. Пример: Узел кластера rabbit@slave1 подключается к rabbit@master ... |
| stdout_lines список | всегда | Стандартный вывод команды, разделённый на строки. Пример: ["u'Узел кластера rabbit@slave1 подключается к rabbit@master ...'"] |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается Командой Ansible Core. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.
Авторы
- Matt Davis (@nitzmahone)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/win_shell_module.html