【问题标题】:Export powershell script to CSV将 powershell 脚本导出为 CSV
【发布时间】:2012-04-23 05:09:06
【问题描述】:

我有一个小脚本,用于检索 AD 中特定 OU 中所有用户的 LastLogonTimestamp 和 SAMAccount,并将时间戳转换为日期并仅从字符串中提取日期。那部分工作正常。然后我想将其输出到 CSV,以便它可以在 Excel 中打开并完美地格式化为列并且看起来很漂亮。

我尝试过 ConvertTo-Csv 和 Export-Csv 但都失败了。问题是我是 Powershell 的新手。这是我的第一个脚本,我不完全理解它是如何工作的。我的脚本可能非常凌乱且不合逻辑,但到目前为止它完成了这项工作。

请帮忙。谢谢。

$userlist = Get-ADUser -SearchBase "OU=IT,DC=whatever,DC=com,DC=au" -Filter * -Properties * | Select-Object -Property Name,LastLogonTimestamp,SAMAccountName | Sort-Object -Property Name

$userlist | ForEach-Object {
    $last = $_.LastLogonTimestamp;
    $ADName = $_.SAMAccountName;

    $tstamp = w32tm /ntte $last;
    if($tstamp.Length -lt "40"){}else
    {
        $ADDate = [DateTime]::Parse($tstamp.Split('-')[1]).ToString("dd/MM/yyyy")
        write-host $ADDate;
        write-host $ADName;
    }
}

【问题讨论】:

    标签: powershell export-to-excel export-to-csv


    【解决方案1】:

    您必须为每个用户创建对象并将这些对象通过管道传送到 Export-CSV cmdlet:

    $usersList | %{
    
    # current logic
    
    $user = new-object psobject
    $user | add-member -membertype noteproperty -name LastLogon -value $last
    $user | add-member -membertype noteproperty -name ADName -value $ADName
    $user | add-member -membertype noteproperty -name ADDate -value $ADDate
    $user
    } | export-csv test.csv -notype
    

    填充对象的替代语法:

    $properties = @{"LastLogon" = $last; "ADName" = $ADName; "ADDate" = $ADDate}
    $user = new-object psobject -property $properties
    

    【讨论】:

    • 我不自觉地否决了您的答案...可能是因为我正在用智能手机阅读它并触摸它。您可以编辑它,以便我重新投票吗??
    • @Christian - 啊,我已经做到了 :) 无论如何,添加了用于创建对象的替代语法。
    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多