将Powershell脚本导出为CSV

时间:2015-01-07 16:29:58

标签: powershell csv active-directory

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

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

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

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

但输出是空白的。知道我在这里做错了吗?还有一种方法可以在多台计算机上运行但是写入同一个文件吗?

3 个答案:

答案 0 :(得分:0)

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 }

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

答案 1 :(得分:0)

您需要将这些属性传递到文件中,如..

[System.Environment]::UserName, [System.Environment]::UserDomainName, [System.Environment]::MachineName | Out-File T:\Test.txt

答案 2 :(得分:0)

"$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"