【问题标题】:exporting Powershell Script to CSV将 Powershell 脚本导出为 CSV
【发布时间】:2015-01-07 16:29:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: powershell csv active-directory


    【解决方案1】:
    "$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"
    

    【讨论】:

      【解决方案2】:

      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 }

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

      【讨论】:

      • 这假定已安装 RSAT 或 Active Directory Powershell 模块。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-04
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-10
        相关资源
        最近更新 更多