You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible调用Powershell获取Active Directory OU无返回值问题求助

问题根因

你遇到的两个报错均源于Ansible Windows提权的默认登录令牌限制:默认runas方式生成的是无网络访问权限的本地交互登录上下文,无法访问域控资源,也无权限读取计算机级别的组策略信息。

修复方案

方案1:调整提权配置(可正常执行你原有的两个命令)

修改Ansible任务配置,指定提权时生成带网络凭据的登录令牌,同时注意powershell变量转义避免被Ansible提前解析:

# 用adsisearcher查询OU的任务
- name: Get Active Directory OU from Instance via adsisearcher
  ansible.windows.win_powershell:
    script: |
      ([adsisearcher]'(&(name={{ ansible_hostname }})(objectClass=computer))').findall().path
  become_method: runas
  become: yes
  become_user: Administrator
  become_flags: logon_type=interactive logon_flags=netcredentials_only
  register: active_directory_ou

# 用gpresult查询OU的任务
- name: Get Active Directory OU from Instance via gpresult
  ansible.windows.win_powershell:
    script: gpresult /r /scope computer /f
  become_method: runas
  become: yes
  become_user: Administrator
  become_flags: logon_type=interactive logon_flags=netcredentials_only
  register: active_directory_ou

方案2:读取本地注册表(更稳定,无需访问域控)

加域的Windows设备会在本地注册表存储当前计算机的完整OU路径,无需访问域控即可直接读取,避免网络和权限问题:

- name: Get Active Directory OU from local registry
  ansible.windows.win_reg_stat:
    path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine
    name: Distinguished-Name
  register: ad_ou_reg
- name: set OU fact
  set_fact:
    active_directory_ou: "{{ ad_ou_reg.value }}"

验证方式

执行任务后可通过{{ active_directory_ou }}直接获取完整的计算机对象DN路径,其中包含OU层级信息。

内容的提问来源于stack exchange,提问作者Benny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:15:03