【问题标题】: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