【问题标题】:Need help exporting localuser date to a csv... powershell需要帮助将本地用户日期导出到 csv ... powershell
【发布时间】: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


【解决方案1】:

确实,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

【讨论】:

  • 嘿西奥!我尝试了您发送的内容,但它没有导出任何内容...
  • @Zack-SysAdmin 抱歉.. 我忽略了引用属性名.. 还拿出了ForEach-Object {...},因为这里不需要。
  • @Zack-SysAdmin 我们还没有收到您的来信。我的回答解决了您的问题吗?如果是这样,请通过单击左侧的 图标来考虑accepting。这将帮助其他有类似问题的人更轻松地找到它,并有助于激励其他人回答您将来可能遇到的任何问题。
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 2018-08-08
  • 2016-11-13
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多