7

在离线环境中运行 Ansible 2.4.2,使用 kerberos 进行身份验证,

通过 ansible playbook,使用特定(域)用户运行 powershell 脚本的正确语法是什么:DOMAIN\someuser,在提升模式下?

提升模式是指在 Windows 界面中,我将通过以 DOMAIN\someuser 身份登录来运行脚本,然后右键单击 cmd 或 powershell 提示快捷方式,选择“以管理员身份运行”。这当然并不意味着我可以使用本地用户运行脚本:“管理员”。

我要运行的是:

powershell.exe -executionpolicy bypass -noninteractive -nologo -file "myscript.ps1" 

我在 become.yml 中尝试的内容:

- name: sigh
  win_command: powershell.exe -executionpolicy bypass -noninteractive -nologo -file "myscript.ps1" 
  become: yes
  become_user: DOMAIN\someuser
  become_password: someuserpassword
  become_method: runas

脚本运行,但与它相关的错误未在高程中运行。对 win_shell 和 raw 进行了同样的尝试。在没有 become_user 和 become_password 的情况下尝试(yml 使用 someuser@DOMAIN.local 用户和密码运行,所以我真的不知道是否需要成为)。

我正在拖过这个并通过成为: http ://docs.ansible.com/ansible/latest/become.html 找不到对解决方案的引用

有任何想法吗?

4

2 回答 2

11

我做了以下工作以使其在我的剧本中工作:

- name: Run ps1 script in privileged mode
  hosts: "{{ my_hosts }}"
  become_method: runas

  vars:
    ansible_become_password: mysupersecretpasswrod

  tasks:
    - win_shell: '.\myscript.ps1'
      become: yes
      become_user: Administrator
于 2018-02-08T00:09:01.340 回答
3

我以前使用 PsExec 以特定 Windows 域用户的身份运行任务,以进行需要加载配置文件的软件安装。您还可以使用它来模拟远程系统上的提升用户来运行 powershell 脚本。

这不是我的第一选择,但我也遇到了在 Windows 主机上工作的问题。

- name: Copy PsExec
  win_copy:
    src: "files/PsExec.exe"
    dest: "c:\\temp\\psexec.exe"
    force: no

- name: Run powershell as a specific domain user
  win_psexec:
    command: "powershell.exe -executionpolicy bypass -noninteractive -nologo -file 'myscript.ps1'"
    executable: C:\temp\psexec.exe
    elevated: yes
    nobanner: yes
    username: "{{ dom_username }}"
    password: "{{ dev_password }}"
    interactive: yes
于 2018-02-07T21:39:04.033 回答