【问题标题】:Get only computer names from AD仅从 AD 获取计算机名称
【发布时间】:2013-10-03 16:32:46
【问题描述】:

我是 Power Shell 的新手,我正在测试一些命令和想法。我坚持我觉得应该很简单的事情。我想将 AD 中计算机对象的名称提取到文件中。到目前为止我正在尝试的方法是这样的

$computers = Get-ADComputer -Filter * | Format-List name
write($computers) | Out-File -FilePath .\computers.txt

我遇到的问题是输出的文件看起来像这样

name : SERVER1

name : SERVER2

name : WORKSTATION1

name : WORKSTATION2

我正在寻找一个没有前面的“名称:”部分的直接名称列表。我不确定是否有更好的方法来实现这一点。

【问题讨论】:

    标签: powershell active-directory powershell-2.0 powershell-3.0


    【解决方案1】:

    这应该比@MDMoore313 的解决方案更快,因为它不会循环遍历结果并在每次行程中写入磁盘(他的 1.7 秒,而我的 AD 环境中的 1.1 秒,写入 RAMDisk):

    $computers = Get-ADComputer -Filter * | select-object -expandproperty name | out-file .\computers.txt
    

    【讨论】:

    • 这可以满足我的需要!非常感谢!
    【解决方案2】:

    如果您使用的是 PowerShell 3,则可以使用下面的速记点表示法。

    (Get-ADComnputer -filter *).name > .\computers.txt
    or
    (Get-ADComnputer -filter *).name | out-file .\computers.txt
    

    【讨论】:

      【解决方案3】:

      这是普通的面包和黄油:

      Get-ADComputer -Filter * | Format-Table name

      只需将命令中的“列表”一词更改为“表格”一词,您就会得到您所要求的内容 - 主机名前面没有“名称:”文本(并且每个结果之间也没有换行符!)。

      【讨论】:

        【解决方案4】:
        $computers = Get-ADComputer -Filter * | foreach { $_.Name | Add-Content -Path .\computers.txt}
        

        【讨论】:

          【解决方案5】:

          我发现 (get-adcomputer -filter *).name > .\computers.tx 不起作用,但如果对原始定位进行一些修改,它就可以正常工作:

          $computers = Get-ADComputer -Filter * | Format-table name
          
          write($computers) | Out-File -FilePath .\computers.txt
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多