.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 提供的工具为您编写基线代码并按原样使用或根据需要进行调整。
- Active Directory 管理中心:入门
- Active Directory 管理中心
- windows‘Active Directory 管理中心’
- windows‘Active Directory 管理中心’‘PowerShell 历史记录查看器’
- Active Directory 管理中心简介
- 使用 AD 管理中心创建 PowerShell 命令
- 逐步:在 Windows Server 2012 R2 中使用 PowerShell 历史记录查看器
- 学习使用 Active Directory 管理中心的 PowerShell(PowerShell 历史记录查看器)
不应使用 PowerShell 脚本中使用的别名,尽管它们适用于交互式/一次性代码,而这正是它们的用途。如果您在开发工作中使用它们,请确保在发布或共享之前将它们全部展开。原因如下:
- 如果你在 VSCode 中打开此代码,它会将任何别名视为错误,直到你将其展开。
- 如果您对其运行 PSScriptAnalyzer,它也会将它们标记为错误。
在 PowerShell 脚本中使用别名的最佳实践
- https://devblogs.microsoft.com/scripting/best-practice-for-using-aliases-in-powershell-scripts
- https://devblogs.microsoft.com/scripting/using-powershell-aliases-best-practices
为什么首先要担心别名?
使用别名到底有什么大不了的?如果它们使代码更容易输入,那么在脚本中使用它们有什么坏处?谈到脚本时,有两件事在起作用。首先,没有别名可以保证存在 — 即使是由 Windows PowerShell 创建的别名也是如此。