将 Powershell 脚本导出为 CSV

exporting Powershell Script to CSV

我们正准备将我们的 AD 与另一个合并。我们有大约 300 台计算机,我正在尝试将它们与使用它们的用户进行匹配,以便正确迁移帐户和主文件夹,并且我正在尝试寻找获取此信息的最有效方法。

我们让每个人都在一个库存系统 (Filemaker) 中(并且一旦我们迁移(感谢上帝)就会实施 SCCM)但是我们在进行第一个测试批次时遇到了一些错误。我正在寻找可以通过组策略(可能?)推出的东西,它将给我计算机名称、登录帐户,然后他们通过电子邮件将其发送给我。

到目前为止,这就是我所拥有的。

[System.Environment]::UserName
[System.Environment]::UserDomainName
[System.Environment]::MachineName
Out-File T:\TEST.txt

但是输出是空白的。知道我在这里做错了什么吗?也有没有办法让它在多台计算机上运行但写入同一个文件?

Get-ADComputer -Filter * -Property * | Select-Object Name | Out-File C:\outdir\machinelist.txt -NoTypeInformation -Encoding UTF8

将为您获取所有机器名称,除非您已经拥有它们。无论哪种方式,请使用

中的机器列表

$MachineList = Get-Content -Path c:\outdir\machinelist.txt; foreach ($Machine in $MachineList){ ($Machine + ": " + @(Get-WmiObject -ComputerName $Machine -Namespace root\cimv2 -Class Win32_ComputerSystem)[0].UserName) | Out-File "C:\outdir\result.txt" -Append }

如果将目标目录更改为所有计算机都可以访问的某个位置,它可以在多台计算机上 运行。它不会通过电子邮件发送给您,但您可以直接获取它。

您需要将这些属性通过管道传输到文件中,例如...

[System.Environment]::UserName, [System.Environment]::UserDomainName, [System.Environment]::MachineName | Out-File T:\Test.txt
"$env:USERNAME,$env:USERDOMAIN,$env:COMPUTERNAME" | Out-File 'T:\test.txt'

会将当前登录用户的名称和域以及本地计算机的主机名写入文件 T:\test.txt

不过,使用单个文件可能会由于并发写入尝试而导致冲突。最好每台电脑使用一个文件,像这样:

"$env:USERDOMAIN$env:USERNAME" | Out-File "T:$env:COMPUTERNAME.txt"

运行 它作为登录脚本(或来自登录脚本),例如像这样:

powershell -ExecutionPolicy Bypass -File "\%USERDNSDOMAIN\netlogon\your.ps1"