windows - 用可变用户 ID 替换 Windows 目录路径中的用户名

标签 windows ansible

我有一个可能由多个用户运行的剧本。该剧本运行由我们的审计部门创建的批处理脚本。我们不允许以任何方式修改脚本。他们的脚本获取有关服务器的各种信息并将其输出到用户“文档”文件夹内的文件夹。我的目标是创建一个 Ansible 剧本,可供审计团队中的任何人运行,以便

  1. 删除旧的审核数据
  2. 运行批处理脚本
  3. 存档文件夹
  4. 下载存档文件夹

我目前创建了以下任务:

---
- name: Remove old audit data
  win_file:
     path=C:\Users\my-username\Documents\PCI-Audit-Evidence
     state=absent

- name: Run audit check
  script: ../files/Windows-2008-2012-PCI.cmd

- name: Archive audit folder for download
  script: ../files/zipfolder.ps1

- name: Download audit file
  fetch:
     dest: "audits/{{ inventory_hostname }}/"
     src: "C:/Users/my-username/Documents/PCI-Audit-Evidence.zip"
     flat: yes

一切正常,没有问题。我的问题是我已将我的用户名硬编码到第一个和最后一个任务的源字段中。我需要“我的用户名”作为一个变量,该变量根据运行剧本的人而变化。我尝试过使用 Windows 环境变量“$env:username”,但这不起作用。我也尝试过“{{ ansible_user_id }}”,但在检查了 Windows 2008 服务器的事实后,ansible 实际上并未将用户名记录为事实。

我唯一能想到的就是添加另一个任务,运行一个脚本来登录服务器并运行 whoami 或其他东西,然后将其注册为变量,但这似乎过于复杂。

有更简单的方法吗?

注意:我需要来自远程系统的用户名。

此外,如果本地计算机上的文件已存在,如何获取文件并覆盖该文件?

最佳答案

您可以使用环境变量USERPROFILE(或USERNAME来严格回答问题):

- name: Remove old audit data
  win_file:
     path: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence"
     state: absent

- name: Download audit file
  fetch:
     dest: "audits/{{ inventory_hostname }}/"
     src: "{{ ansible_env.USERPROFILE }}\Documents\PCI-Audit-Evidence.zip"
     flat: yes

关于windows - 用可变用户 ID 替换 Windows 目录路径中的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713507/

相关文章:

windows - 虚拟机测试套件

c++ - 获取包含windows系统目录的盘符

windows - Windows 上未显示 Qt5 快速应用程序窗口

linux - 如何在 ansible 中根据操作系统类型运行 playbook 任务?

ansible - 如何仅运行具有多个标签的 ansible 任务?

ansible - 当部署到不同组中的同一主机时,Ansible合并group_vars

Ansible 使用 systemd 而不是服务模块

c# - 在哪里安全地存储来自 Windows 服务的数据?

windows - IntelliJ IDEA 'refactor' 的键盘快捷键

windows - Ansible win_unzip 模块需要很长时间