如何解决需要帮助将本地用户日期导出到 csv ... powershell
我编写了一个 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
}
}
Write-Host " "
Write-Host "========================================"
Write-Host "Report Path: $OutputFile "
Write-Host "========================================"
当前导出将所有内容都放入第 1 列,我知道这是因为添加内容,但我真的不知道如何使用 export-csv。
解决方法
确实,Add-Content
并不是创建 CSV 文件的最佳工具。
试试
Import-Module ActiveDirectory
$ErrorActionPreference = "SilentlyContinue"
$OutputFile = Join-Path -Path $env:Temp -ChildPath "LocalAdminsReport.csv"
$Computers = Get-ADComputer -Filter "Enabled -eq 'True'" # should be a string
$result = foreach ($Computer in $Computers) {
$ComputerName = $Computer.DNSHostName
$Connectivity = Test-Connection -Computername $ComputerName -Count 1 -Quiet
if ($Connectivity) {
Write-Host "Getting local users from $ComputerName"
Invoke-Command -ComputerName $ComputerName -ScriptBlock {Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount='True'"} |
# output an object
Select-Object @{Name = 'ComputerName'; Expression = {$ComputerName}},@{Name = 'ComputerStatus'; Expression = {'Online'}},@{Name = 'LocalUserName'; Expression = {$_.Name}},@{Name = 'LocalUserEnabled'; Expression = {!$_.Disabled}},@{Name = 'LocalUserDescription'; Expression = {$_.Description}}
}
else {
Write-Host "$ComputerName Status Offline"
# output a similar object for failed computers too
Select-Object @{Name = 'ComputerName'; Expression = {$ComputerName}},@{Name = 'ComputerStatus'; Expression = {'Offline'}},@{Name = 'LocalUserName'; Expression = {$null}},@{Name = 'LocalUserEnabled'; Expression = {$null}},@{Name = 'LocalUserDescription'; Expression = {$null}}
}
}
# output to csv file
$result | Export-Csv -Path $OutputFile -NoTypeInformation
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。