Объедините get-ChildItem с PowerShell ACL

Я ищу помощь в информации о файлах с использованием оболочки Power, у нас есть большая часть того, что нам нужно, кроме информации о владельце.

приведенный ниже код возвращает список каталогов старше 1 года, но проблема в том, что мы не можем отобразить там информацию о владельце:

gci -r 
"D:\Network Shares\ICT\ICT\Network Shares\ICT\Innovations\Robert Pitt" | ? 
{
    $_.LastWriteTime -lt (Get-Date).AddYears(-1)} >> D:\temp\ICTFileAge.txt
}

Мы знаем о команде под названием Get-ACL, но не знали, как все это связать.

У кого есть идеи, пожалуйста, спасибо


person RobertPitt    schedule 02.06.2011    source источник


Ответы (2)


Что-то вроде этого?

gci -r "D:\Network Shares\ICT\ICT\Network Shares\ICT\Innovations\Robert Pitt" |
? {$_.LastWriteTime -lt (Get-Date).AddYears(-1)} |
 % {$_ | add-member -name "Owner" -membertype noteproperty -value (get-acl $_.fullname).owner -passthru} |
  Select fullname,lastwritetime,owner
person mjolinor    schedule 02.06.2011
comment
Большое спасибо, у нас все заработало, хотя -passthu выдавал ошибку, для чего это было, еще раз спасибо :) - person RobertPitt; 02.06.2011
comment
Извините, это должно было быть -passthru. Без этого он не передаст объект дальше по конвейеру после добавления нового члена. Исправил код в посте. - person mjolinor; 02.06.2011
comment
Мы экспортировали набор результатов в электронную таблицу CSV, которая выглядит нормально, не видит никаких ошибок и т. д., но возможно ли, что из-за этого отсутствуют строки? - person RobertPitt; 02.06.2011
comment
Я бы так не думал. Нужен ли ему -passthru или нет, будет зависеть от того, как был написан ваш сценарий, но это будет сделка «все или ничего». Ты либо получишь их все, либо не получишь ничего. - person mjolinor; 02.06.2011

Код можно упростить, используя вычисляемое свойство для извлечения поля владельца ACL:

$Path = 'c:\'

Get-ChildItem $Path |
Select-Object *,@{name='owner';expression={
(get-acl $_.FullName).owner}}
person Nicholas Leader    schedule 15.07.2016