3

我是 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

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

4

5 回答 5

5

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

$computers = Get-ADComputer -Filter * | select-object -expandproperty name | out-file .\computers.txt
于 2013-10-03T17:47:01.293 回答
1

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

(Get-ADComnputer -filter *).name > .\computers.txt
or
(Get-ADComnputer -filter *).name | out-file .\computers.txt
于 2013-10-03T19:02:51.780 回答
1

这是普通的面包和黄油:

Get-ADComputer -Filter * | Format-Table name

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

于 2015-05-05T06:48:41.947 回答
0
$computers = Get-ADComputer -Filter * | foreach { $_.Name | Add-Content -Path .\computers.txt}
于 2013-10-03T17:21:41.173 回答
0

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

$computers = Get-ADComputer -Filter * | Format-table name

write($computers) | Out-File -FilePath .\computers.txt
于 2014-05-23T16:36:26.793 回答