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

Substitute username in Windows directory path with variable user ID

我有一个可能会被多个用户运行使用的剧本。剧本 运行 是我们审计部门创建的批处理脚本。我们不允许以任何方式修改脚本。他们的脚本获取有关服务器的各种信息并将其输出到用户 "Documents" 文件夹内的文件夹中。我的 objective 是创建一个 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

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

我唯一能想到的是添加另一个任务,运行s 一个登录服务器的脚本和 运行 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