AD查询Powershell并导出到txt文件

AD查询Powershell并导出到txt文件,powershell,active-directory,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 |

有人能帮我吗

我必须用以下格式创建一个
.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"

我现在不能亲自尝试,但是。。。根据经验

-properties * | select SamAccountName, GivenName, Surname
应该能让你进入棒球场

重新阅读您的代码几次,以及。。。老实说,这似乎是一团糟。你陈述了你想要完成的事情,然后还有一大堆其他的东西,在这种情况下几乎没有意义。也许我太累了,我会在早上回来检查,如果需要的话编辑/删除

好吧,再读几遍,头痛就好了,但还是

一般来说,我想建议您(或任何人,真的)如果Powershell让人困惑的话,将其分解为易于处理的部分

为用户服务

$users = Get-ADUser -Filter { Name -like '*' } -Properties * | select SamAccountName, Givenname, Surname
对于输出

foreach ($user in $users)
{
    '("{0}""{1}{2}"' -f $user.SamAccountName, $user.GivenName, $user.Surname
}

不幸的是,我目前没有办法亲自尝试,但它应该是在球场上。。。如果你最后犯了一些错误,让我知道,我相信我能引导你克服它。我不是100%确定在这种特殊情况下它们是单引号还是双引号。。。我必须试一试。

我同意@notjust me关于你的问题一团糟的说法,但无论如何我会给出一个答案

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

$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

通读你的代码。。。。你们知道零件在做什么和为什么吗?或者这只是复制和粘贴?使用评论并制定一个如何实现目标的计划。要回答这个问题,我需要重写整个代码:-/干得好我想你把这些都解释对了