我们正准备将我们的AD与另一个合并。我们有大约300台计算机,我试图与谁使用它们,以便帐户和主文件夹正确迁移,我正在考虑获取此信息的最有效方法。
我们每个人都在库存系统中(Filemaker)(一旦我们迁移就会实施SCCM(感谢上帝))但是当我们完成第一批测试时,我们遇到了一些错误。我正在寻找可以通过组策略推出的东西(可能?),它会给我计算机名称,登录帐户,然后通过电子邮件发送给我。
到目前为止,这就是我所拥有的。
[System.Environment]::UserName
[System.Environment]::UserDomainName
[System.Environment]::MachineName
Out-File T:\TEST.txt
但输出是空白的。知道我在这里做错了吗?还有一种方法可以在多台计算机上运行但是写入同一个文件吗?
答案 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"