AD查询Powershell并导出到txt文件

时间:2014-06-13 20:46:33

标签: powershell active-directory

有人可以帮助我吗?

我必须使用以下格式创建.txt文件:

user("SamAccountName","GivenName Surname"){}

我能够创造这个:

#Get AD Users Info
cls
$SamAccountName = New-Item 'c:\SamAccountName.txt' -type file -Force

Get-ADUser -Filter * -Properties SamAccountName | 
    select -First 15 | Sort-Object SamAccountName |
         Format-Table SamAccountName | Out-File $SamAccountName


$content = Get-Content $SamAccountName
$content | Foreach {$_.TrimEnd() } | where {$_ -ne ""} | Select-Object -Skip 3 | Set-Content $SamAccountName


#Write quotes (make it nice and readable!)
$ACTIVEDIRECTORY = New-Item 'c:\ACTIVEDIRECTORY.lst' -type file -Force

Clear-Content $ACTIVEDIRECTORY

$quotes= '"'

(Get-Content $SamAccountName) |     
    ForEach-Object {Add-Content $ACTIVEDIRECTORY "$quotes$_$quotes"}

    Get-Content $ACTIVEDIRECTORY

这给了我这个结果:

"GivenName"
"GivenName"
"GivenName"

1 个答案:

答案 0 :(得分:0)

我同意@notjustme关于你的问题一团糟,但无论如何我都会在那里提出答案。

您的第一个问题是如何设置这两个变量。它们最终成为对象,但您正试图像文件路径一样使用它们。

$SamAccountName = "c:\SamAccountName.txt"
$ACTIVEDIRECTORY = "c:\ACTIVEDIRECTORY.lst"

这将为您提供逗号分隔的用户列表,这是(某种程度上)代码的哪个部分正在执行。

Get-ADUser -Filter * | Select-Object SamAccountName, GivenName, SurName -First 15 | Sort-Object SamAccountName | Export-Csv $SamAccountName -NoTypeInformation

这将为您提供您在顶部指定的字符串格式的用户列表,这是奇怪的,但无论如何。

Import-Csv $SamAccountName | ForEach-Object {"user(`"$($_.SamAccountName)`",`"$($_.GivenName) $($_.Surname)`"){}"} | Out-File $ACTIVEDIRECTORY