【发布时间】:2021-07-30 15:42:27
【问题描述】:
我编写了一个 PowerShell 脚本来获取每台机器的所有本地用户数据。我需要将这些数据导出到一个漂亮的 .csv 文件中,其中包含 ComputerName、ComputerStatus、LocalUserName、LocalUserenabled 和 Localuserdescription 列...
Import-Module ActiveDirectory
$ErrorActionPreference = "SilentlyContinue"
$Computers = Get-ADComputer -Filter {Enabled -eq $True}
$OutputPath = "$Env:Temp"
$OutputFile = Join-Path $OutputPath "LocalAdminsReport.csv"
Add-Content -Path $OutputFile -Value "ComputerName,ComputerStatus,LocalUserName,LocalUserEnabled,LocalUserDescription"
Foreach ($Computer in $Computers) {
$ComputerName = $Computer.DNSHostName
$Connectivity = Test-Connection -Computername $ComputerName -Count 1 -Quiet
if ($Connectivity) {
Write-Host "Getting local users from $ComputerName"
$LocalUsers = Invoke-Command -ComputerName $ComputerName {Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount='True'"}
ForEach ($LocalUser in $LocalUsers){
Add-Content -Path $OutputFile -Value $ComputerName, "Online", -Value $LocalUser.Name, -Value $LocalUser.Enabled, -Value $LocalUser.Description
}
} else {
Write-Host "$ComputerName Status Offline"
Add-Content -Path $OutputFile -Value $ComputerName, "Offline", $null, $null, $null
}
}
Write-Host " "
Write-Host "========================================"
Write-Host "Report Path: $OutputFile "
Write-Host "========================================"
当前导出将所有内容放入第 1 列,我知道这是因为添加内容,但我真的不知道如何使用 export-csv。
【问题讨论】:
-
CSV 只是一个逗号分隔的值文件。它是一组字符串,它们之间有逗号。如果您想手动构建一个,就像您尝试做的那样,您需要添加反映这一点的内容。每行应该是用逗号连接的单行。试试
-value ($computername, "Online", $LocalUser.Name, $LocalUser.Enabled, $LocalUser.Description -join ",") -
创建
Export-Csv理解的对象是您的最佳选择:阅读docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/… -
相同的结果:/
-
尝试 $myValues = @("$ComputerName", "Online", "$LocalUser.Name", "$LocalUser.Enabled", "$LocalUser.Description" ) ; $myValues |导出-csv -Path $OutputFile
标签: powershell export-to-csv system-administration