Сканирование свойств файлов на листе Excel от Powershell - PullRequest
0 голосов
/ 26 июня 2018

У меня есть задача, которая требует проверять свойства всех файлов, указанных в определенных каталогах, где хранятся файлы.Мне нужен мой код для чтения следующей строки информации, разделенной разделителем ",", который хранится в файле .txt следующим образом (каталог создается мной на моем собственном устройстве, и я продолжил, создавая некоторые пустые файлы .xlsx, чтобыпротестируйте мой код:

Jakarta,C:\\temp\Hfolder,C:\temp\Lfolder

В настоящее время у меня есть код, который выглядит следующим образом:

$LocContent = Import-Csv "C:\temp\Location.txt" # -Header $fileHeaders
ForEach($line in $LocContent){C:\temp\test1.csv -NoTypeInformation 
#split fields into values
      $line = $LocContent -split (",")
      $country = $line[0]
      $hDrivePath = $line[1]
      $lDrivePath = $line[2]
      Get-ChildItem $hDrivePath -force -include *.xlsx, *.accdb, *.accde, *.accdt, *.accdr -Recurse
      Get-ChildItem $lDrivePath -force -include *.xlsx, *.accdb, *.accde, *.accdt, *.accdr -Recurse
      ? {
         $_.LastWriteTime -gt (Get-Date).AddDays(-5) 
      }
      Select-Object -Property Name, Directory, @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}, CreationTime, LastAccessTime, @{N="Location";E={$country}}, @{N='size in MB';E={$_.Length/1024kb}} | Export-Csv 
}

Однако в файле .csv, который я назначил для вывода информации, нет выходных данных.неправильно в моем коде? Спасибо!

1 Ответ

0 голосов
/ 26 июня 2018

В вашем коде есть несколько недостатков:

  • У выбора нет ни -InputObject, ни чего-либо переданного по трубопроводу, поэтому выход не может быть
  • Вы должны решить, относитесь ли вы к C:\temp\Location.txt как
    текстовый файл с Get-Content и разделением
    или как CSV с заголовками
    или без заголовков и поставляем их на импорт.
  • Выход Get-ChildItem нигде не передается по конвейеру и не сохраняется в переменной, поэтому он попадает на экран.
  • Export-Csv требуется имя файла для экспорта в.

Попробуйте этот непроверенный скрипт:

## Q:\Test\2018\06\26\SO_51038180.ps1
$fileHeaders = @('country','hDrivePath','lDrivePath')
$extensions  = @('*.xlsx','*.accdb','*.accde','*.accdt','*.accdr')

$LocContent = Import-Csv "C:\temp\Location.txt" -Header $fileHeaders

$NewData = ForEach($Row in $LocContent){
    Get-ChildItem $Row.hDrivePath,$Row.lDrivePath -Force -Include $extensions -Recurse |
        Where-Object LastWriteTime -gt (Get-Date).AddDays(-5) |
            Select-Object -Property Name, 
                Directory, 
                @{Name="Owner";Expression={(Get-ACL $_.Fullname).Owner}}, 
                CreationTime, 
                LastAccessTime, 
                @{N="Location";E={$Row.country}}, 
                @{N='size in MB';E={$_.Length/1024kb}}
}
# you choose what to do with the result uncomment the desired

$NewData | Format-Table -Auto
# $NewData | Out-Gridview
# $NewData | Export-Csv '.\NewData.csv' -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...