【发布时间】:2021-05-15 12:18:27
【问题描述】:
我正在使用Get-WindowsAutopilotInfo 生成计算机的序列号和哈希码并将该信息导出为 CSV。
下面是我常用的代码:
new-item "c:\Autopilot_Export" -type directory -force
Set-Location "C:\Autopilot_Export"
Get-WindowsAutopilotInfo.ps1 -OutputFile Autopilot_CSV.csv
Robocopy C:\Autopilot_Export \\Zapp\pc\Hash_Exports /copyall
这会将名为“Autopilot_CSV.csv”的 CSV 文件输出到 C:\Autopilot_Export 目录,然后 Robocopy 将其复制到上面列出的 Hash_Exports 文件夹内的网络共享驱动器。在上面的代码中,如果我手动输入“test”、“123”、“ABC”等并替换“Autopilot_CSV”,它也会在所有这些名称下输出一个 CSV。所以看起来Get-WindowsAutopilotInfo 将创建一个 CSV 文件并使用您传递给它的任何字符串保存文件名。太好了。
但是,我在多台不同的计算机上运行此脚本,我希望将导出的 CSV 命名为运行它的机器独有的名称,以便在复制后轻松识别它。我正在尝试将环境变量 $env:computername 的值作为 CSV 的字符串输入传递,但它不起作用。
这是我尝试使用的代码:
new-item "c:\Autopilot_Export" -type directory -force
Set-Location "C:\Autopilot_Export"
Get-WindowsAutopilotInfo.ps1 -OutputFile $env:computername.csv
Robocopy C:\Autopilot_Export C:\Users\danieln\Desktop /copyall
此代码根本不会生成 CSV 文件。为什么不呢?
我只是对 Powershell 中如何使用环境变量有一个基本的误解吗? $env:computername 似乎返回了计算机名称的字符串,但我无法将它传递到 Get-WindowsAutopilotInfo 并保存它,但如果我手动输入字符串作为输入,它会工作。
我还尝试将其设置为变量 $computername = [string]$env:computername 并在 .CSV 之前传递 $computername ,但这似乎也不起作用。根据文档,环境变量显然已经是字符串。
我错过了什么吗?
谢谢!
【问题讨论】:
标签: powershell csv scripting environment-variables export-to-csv