如何将powershell foreach循环结果输出到文本文件中?

lb3vh1jj  于 2023-02-23  发布在  Shell
关注(0)|答案(1)|浏览(198)

如何将foreach循环结果输出到文本文件中?我有一个Active Directory名称列表,希望以表格格式输出到文本文件中,但只显示了名字:

Name   SamAccountName UserPrincipalName        
----   -------------- -----------         
Greg   Gre.b87        Greg.b87@fs.com

这是我的当前代码:

- name: Run script
    ansible.windows.win_powershell: 
      script: |     
        [CmdletBinding()]
        param (
            [array]
            $namelist
        )

        foreach ($name in $namelist) {
             $results = Get-ADUser -Filter "SamAccountName -eq '$name'" -Properties whenCreated | Select Name,SamAccountName,UserPrincipalName
             echo "User Creation Successful:" 
             echo "$results"
             $results | Format-Table -AutoSize | Out-File -FilePath C:\AD.txt -Width 5000 
        }

      parameters:
        namelist: "{{ hostvars.localhost.name_list[1:] }}"
    • 更新:**尝试了Dilly B的解决方案,我得到了这个:
Name   SamAccountName   whenCreated        
----   --------------   -----------        
Greg   Gre.b87          2/5/2023 8:12:47 AM
User Creation Successful: Gre.b87
Zee    zeef.cd          2/5/2023 8:12:53 AM
User Creation Successful: zeef.cd
Dawn   Dawn.5y          2/5/2023 8:13:00 AM
User Creation Successful: Dawn.5y

现在所有的名字都循环到表中了,但是如果我想让表看起来像这样,我应该如何编写代码呢?

User creation successful:
Name   SamAccountName   whenCreated        
----   --------------   -----------        
Greg   Gre.b87          2/5/2023 8:12:47 AM
Zee    zeef.cd          2/5/2023 8:12:53 AM
Dawn   Dawn.5y          2/5/2023 8:13:00 AM
qgzx9mmu

qgzx9mmu1#

您可以收集如下结果

$results = foreach ($name in $namelist) {
           Get-ADUser -Filter "SamAccountName -eq '$name'" -Properties whenCreated | Select Name,SamAccountName,UserPrincipalName
         Write-Host "User Creation Successful:$($name)"     
        }
$results | Format-Table -AutoSize | Out-File -FilePath C:\AD.txt -Width 5000

相关问题