もう一度あなたの助けが必要です。「Users」列でグループ化しようとしています。最大の「LastAccessTime」値と対応する「FullName」が表示されています。以下のMyCSV.csvには次のものが含まれています。
"Users"、 "FullName"、 "LastAccessTime" "user1"、 "c:\ felder1 \ Sub1"、 "20201203" "user1"、 "c:\ folder1 \ Sub1a"、 "20201223" "user1"、 "c: \ folder1 \ Sub1b "、" 202011123 " " user2 "、" c:\ folder2 \ Sub2 "、" 20201218 " " user2 "、" c:\ folder2 \ Sub2a "、" 20201228 " " user3 "、" c:\ folder3 \ Sub3 "、" 20201212 " " user3 "、" c:\ folder3 \ Sub3a "、" 20201214 " " user3 "、" c:\ folder3 \ Sub3b "、" 20201215 " " user3 "、" c:\ folder3 \ Sub3c "、" 20201011 "
「FullName」が一致する場合は最初の行のみを参照することを除いて、このコードで機能します。 $_.Group[0].FullName
Import-Csv -Path "$Env:USERPROFILE\Desktop\MyCSV.csv" |
Group-Object Users |
ForEach-Object {
New-Object -TypeName psobject -Property ([ordered]@{
User = $_.Group[0].Users
FullName = $_.Group[0].FullName
"LastAccessTime" = $_.Group | Measure-Object -Property "LastAccessTime" -Maximum | ForEach-Object { $_.Maximum } } )
} | Export-Csv "$Env:USERPROFILE\Desktop\result.csv" -NoTypeInformation
実際の結果は次のとおりです。
"User"、 "FullName"、 "LastAccessTime" "user1"、 "c:\ felder1 \ Sub1"、 "20201223" "user2"、 "c:\ folder2 \ Sub2"、 "20201228" "user3"、 "c: \ folder3 \ Sub3 "、" 20201215 "
しかし、私はそれがそうであったことを望みます:
"User"、 "FullName"、 "LastAccessTime" "user1"、 "c:\ felder1 \ Sub1"、 "20201223" "user2"、 "c:\ folder2 \ Sub2a"、 "20201228" "user3"、 "c: \ folder3 \ Sub3b "、" 20201215 "
何を変更すればよいですか?
あなたはそのようにあなたのこの質問で受け入れられた答えを調整することができます
$properties = @{Name='User'; Expression={$user}},
'FullName',
@{Name='LastAccessTime'; Expression={$_.LastAccessTime.ToString('yyyyMMdd')}}
Import-Csv $HomeDir | ForEach-Object {
$user = $_.users
Get-ChildItem $_.HomeDir -ErrorAction SilentlyContinue |
Where-Object {$_.PSIsContainer -eq "True"} |
Select-Object $properties |
Sort-Object -Descending -Property LastAccessTime |
Select-Object -First 1
} | Export-Csv $newcsv -NoTypeInformation
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加