Я хочу запустить командлет Get-LocalGroupMember , используя Ansible playbook.
1) Запуск Get-LocalGroupMember на сервере. Казнь прошла успешно. Проверка версии Powershell показала версию 5.1.14409.1005.
2) Запуск Get-LocalGroupMember с использованием Ansible playbook. Казнь не была успешной. Проверка в журнале playbook обнаружила следующее:
- Не удается найти командлет Get-LocalGroupMember .
- Сообщается, что используется версия Powershell версии 4.0 .
Сервер был перезагружен. Затем книга воспроизведения снова исполняется. Это все равно дало тот же результат ошибки.
В чем может быть причина того, что win_shell все еще хочет использовать старый powershell.exe v4.0? Спасибо.
Это книга игр.
---
- name: add domain user to Windows
hosts: '{{ host }}'
gather_facts: no
vars:
user: null
tasks:
- name: add user
win_shell:
"{{ item }}"
with_items:
# - '$adminGroup = [ADSI]"WinNT://$env:computername/Administrators"'
# - '$adminGroup.add("WinNT://astro.com.my/{{ user }}")'
- $PSversiontable
- Get-LocalGroupMember Administrators
Это версия хоста powershell. Обратите внимание, что версия 5.0.
PS C:\Windows\system32> $PSversiontable
Name Value
---- -----
PSVersion 5.1.14409.1005
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1005
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Это результат выполнения командлета.
PS C:\Windows\system32> Get-LocalGroupMember Administrators
ObjectClass Name PrincipalSource
----------- ---- ---------------
User A.COM\AKJASHIS
Это результат запуска командлета с использованием playbook. Обратите внимание, что значение PSVersion составляет 4,0, а не 5,0.
[root@hpcprdrhe01 playbook]# ansible-playbook -v win-add-domain-user.yml -e "host=ipcrec101" -e "user=aflahmad"
Using /etc/ansible/ansible.cfg as config file
PLAY [add domain user to Windows] ***************************************************************************************************************************
TASK [add user] *********************************************************************************************************************************************
changed: [ipcrec101] => (item=$PSversiontable) => {"ansible_loop_var": "item", "changed": true, "cmd": "$PSversiontable", "delta": "0:00:01.281267", "end": "2020-05-03 06:35:29.311512", "item": "$PSversiontable", "rc": 0, "start": "2020-05-03 06:35:28.030245", "stderr": "", "stderr_lines": [], "stdout": "\r\nName Value \r\n---- ----- \r\nPSVersion 4.0 \r\nWSManStackVersion 3.0 \r\nSerializationVersion 1.1.0.1 \r\nCLRVersion 4.0.30319.42000 \r\nBuildVersion 6.3.9600.17400 \r\nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0} \r\nPSRemotingProtocolVersion 2.2 \r\n\r\n\r\n", "stdout_lines": ["", "Name Value ", "---- ----- ", "PSVersion 4.0 ", "WSManStackVersion 3.0 ", "SerializationVersion 1.1.0.1 ", "CLRVersion 4.0.30319.42000 ", "BuildVersion 6.3.9600.17400 ", "PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} ", "PSRemotingProtocolVersion 2.2 ", "", ""]}
failed: [ipcrec101] (item=Get-LocalGroupMember Administrators) => {"ansible_loop_var": "item", "changed": true, "cmd": "Get-LocalGroupMember Administrators", "delta": "0:00:01.484411", "end": "2020-05-03 06:35:34.749100", "item": "Get-LocalGroupMember Administrators", "msg": "non-zero return code", "rc": 1, "start": "2020-05-03 06:35:33.264689", "stderr": "Get-LocalGroupMember : The term 'Get-LocalGroupMember' is not recognized as \r\nthe name of a cmdlet, function, script file, or operable program. Check the \r\nspelling of the name, or if a path was included, verify that the path is \r\ncorrect and try again.\r\nAt line:1 char:65\r\n+ [Console]::InputEncoding = New-Object Text.UTF8Encoding $false; \r\nGet-LocalGroupMe ...\r\n+ \r\n~~~~~~~~~~~~~~~~\r\n + CategoryInfo : ObjectNotFound: (Get-LocalGroupMember:String) [] \r\n , CommandNotFoundException\r\n + FullyQualifiedErrorId : CommandNotFoundException", "stderr_lines": ["Get-LocalGroupMember : The term 'Get-LocalGroupMember' is not recognized as ", "the name of a cmdlet, function, script file, or operable program. Check the ", "spelling of the name, or if a path was included, verify that the path is ", "correct and try again.", "At line:1 char:65", "+ [Console]::InputEncoding = New-Object Text.UTF8Encoding $false; ", "Get-LocalGroupMe ...", "+ ", "~~~~~~~~~~~~~~~~", " + CategoryInfo : ObjectNotFound: (Get-LocalGroupMember:String) [] ", " , CommandNotFoundException", " + FullyQualifiedErrorId : CommandNotFoundException"], "stdout": "", "stdout_lines": []}
PLAY RECAP **************************************************************************************************************************************************
ipc101 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0