0

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;
    }
}
4

1 に答える 1

4

ユーザーごとにオブジェクトを作成し、それらをExport-CSVコマンドレットにパイプする必要があります。

$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
于 2012-04-23T07:01:49.417 に答える