Active Directory Powershell到固定宽度的txt文件

时间:2018-12-18 18:03:46

标签: powershell

尝试将4个对象从Ad导出到不带标题的固定宽度txt文件中。

我需要以下各列为随后的宽度。

Employee ID    10 
Work Phone      10
Work Phone Extension    5
Work Email Address      50
User ID             20

以下内容为我提供了最好的输出,但是并没有按照我需要的方式调整列的大小。我一直在挖掘,认为我需要的东西超出了我所能适应的范围。

我不确定是否需要使用export-csv导出,然后将其导入重新格式化,或者我是否可以直接进行文件外输出。

$DateTime = Get-Date -f "yyyyMMdd"

#// Set CSV file name
$CSVFile = "d:\scripts\workday\int002_"+$DateTime+".txt"

Get-ADGroup -Filter {(name -like "*Group Name*")} `
    | Get-ADGroupMember -Recursive | Where { $_.objectClass -eq "user" } `
    | Get-ADUser -properties * | where {$_.enabled -eq $true} `
    | select employeeid,telephoneNumber,mail,sAMAccountName  -unique | FT employeeid,telephoneNumber,mail,sAMAccountName -hidetableheaders -autosize | out-file $CSVFile

样本输出:

8855      2122445710     xxxry.michalsen@companydomain.com                 michalsenm 

1 个答案:

答案 0 :(得分:3)

您可能需要手动进行操作...

$result = foreach($user in $users) {
    $user.employeeid.PadRight(10),
    $user.telephoneNumber.PadRight(10),
    $user.mail.PadRight(50),
    $user.sAMAccountName.PadRight(20) -join ' '
}

$result | Out-File $CSVFile

如果属性不是字符串,则修订版也可以使用:

$result = foreach($user in $users) {
    '{0,-10}{1,-10}{2,-50}{3,-20}' -f
        $user.employeeid,
        $user.telephoneNumber,
        $user.mail,
        $user.sAMAccountName
}

$result | Out-File $CSVFile