如何使用 PowerShell 将 AD 用户属性导出到 .csv 文件?

如何使用 PowerShell 将 AD 用户属性导出到 .csv 文件?

.csv我在将 AD 用户属性导出到属于特定 AD 组成员的文件时遇到问题。

这是我的代码

$ExportPath= "C:\Users\group_list.csv"
$groupname = "group1"
$users = Get-ADGroupMember -Identity $groupname | ? {$_.objectclass -eq "user"}
foreach ($activeusers in $users) { Get-ADUser -Identity $activeusers | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Format-Table} Export-Csv $ExportPath }

答案1

您应该只将$Users变量提供给选择所需属性的管道,然后将其通过管道传输到.csv文件。

$ExportPath = "C:\Users\group_list.csv"
$GroupName = "group1"
$Users = Get-ADGroupMember -Identity $GroupName | ? {$_.objectclass -eq "user"}

$Users | ? {$_.enabled -ne $true} | select Name, SamAccountName, UserPrincipalName, enabled, DistinguishedName | Export-Csv $ExportPath

答案2

您发布的内容存在语法问题

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeusers in $users) 
{ 
    Get-ADUser -Identity $activeusers | 
    Where-Object {
    $_.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Format-Table
} Export-Csv $ExportPath 

快速重构您发布的代码。

$ExportPath = 'C:\Users\group_list.csv'
$groupname  = 'group1'
$users = Get-ADGroupMember -Identity $groupname | 
         Where-Object {$_.objectclass -eq 'user'}

foreach ($activeuser -in $users) 
{ 
    Get-ADUser -Identity $activeuser | 
    Where-Object {
    $PSItem.enabled -ne $true} | 
    Select-Object Name, 
                  SamAccountName, 
                  UserPrincipalName, 
                  enabled, 
                  DistinguishedName | 
    Export-Csv $ExportPath  -NoTypeInformation -Append
} 

“Zoran Jankov” 给出的是更直接/更少的代码,但一定要添加“-NoTypeInformation”,否则你最终会在输出中出现一些你不想要的额外文本。

供参考...

使用 MS 提供的工具为您编写基线代码并按原样使用或根据需要进行调整。

不应使用 PowerShell 脚本中使用的别名,尽管它们适用于交互式/一次性代码,而这正是它们的用途。如果您在开发工作中使用它们,请确保在发布或共享之前将它们全部展开。原因如下:

  1. 如果你在 VSCode 中打开此代码,它会将任何别名视为错误,直到你将其展开。
  2. 如果您对其运行 PSScriptAnalyzer,它也会将它们标记为错误。

在 PowerShell 脚本中使用别名的最佳实践

为什么首先要担心别名?

使用别名到底有什么大不了的?如果它们使代码更容易输入,那么在脚本中使用它们有什么坏处?谈到脚本时,有两件事在起作用。首先,没有别名可以保证存在 — 即使是由 Windows PowerShell 创建的别名也是如此。

使用 PSScriptAnalyzer 检查 PowerShell 代码以获得最佳实践

相关内容