在单独的 Excel 工作表上输出 Powershell 域搜索



我正在执行一个Get-ADComputer并尝试遍历从各个房间中提取计算机名称的循环。我正在尝试将每个房间输出到不同的 Excel 工作表。

我正在运行PowerShell版本5:

$results = for($room=102; $room -le 110; $room++) {
Get-ADComputer -SearchBase $oubase -Properties Name, Description -Filter * |
Where-Object {$_.description -clike "*RM $Room"}
}
$results | 
Select-Object Name, Description |
Export-CSV '\DesktopRoom_Hosts.csv' -NoTypeInformation -Encoding UTF8 -Append

我需要做什么来修复 Excel 工作表输出?

你的帖子说你想要一个Excel工作表,但你的代码正在输出到CSV。不能将第二个工作表添加到 CSV。您可以为每个计算机对象导出不同的 CSV 文件。

$results = for($room=102; $room -le 110; $room++) {
Get-ADComputer -SearchBase $oubase -Properties Name, Description -Filter * |
Where-Object {$_.description -clike "*RM $Room"}
}
$results | 
Select-Object Name, Description | Foreach-Object {
$_ | Export-CSV -Path ("\Desktop{0}.csv" -f $_.Name) -NoTypeInformation -Encoding UTF8 -Append

如果问题是获取域名,则可以向Select-Object命令添加一些代码。

$results = for($room=102; $room -le 110; $room++) {
Get-ADComputer -SearchBase $oubase -Properties Name,Description,DNSHostName -Filter * |
Where-Object {$_.description -clike "*RM $Room"}
}
$results | 
Select-Object Name,Description,@{n='Domain';e={$_.DNSHostName -Replace $("{0}." -f $_.Name}} |
Export-CSV '\DesktopRoom_Hosts.csv' -NoTypeInformation -Encoding UTF8 -Append

检索计算机对象的域的说明:

DNSHostName属性包含计算机对象的 FQDN。因此,您只需要删除该字符串的主机名部分。在这里,我们只是将主机名和以下.字符替换为任何内容。主机名是从计算机对象的Name属性中检索的。-f运算符用于简单地将.字符附加到名称中。Select-Object使用哈希表来计算域值,并将其存储在名为 Domain 的属性中。

或者,您可以应用上述相同的概念来获取域名,但将计算机对象的 CanonicalName 与-Split运算符一起使用。

$results = for($room=102; $room -le 110; $room++) {
Get-ADComputer -SearchBase $oubase -Properties Name,CanonicalName,Description -Filter * |
Where-Object {$_.description -clike "*RM $Room"}
}
$results | 
Select-Object Name,Description,@{n='Domain';e={($_.CanonicalName -Split "/")[0]}} |
Export-CSV '\DesktopRoom_Hosts.csv' -NoTypeInformation -Encoding UTF8 -Append

最新更新