Powershell получает информацию о файлах и пытается экспортировать их - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь написать скрипт, в котором я могу выбрать папку, и PowerShell показывает мне имя, размер, .... всех файлов в этой папке. После этого PowerShell должен экспортировать информацию в таблицу Excel. Но я застрял и не знаю, что делать: C

Вот мой код, который я пытался построить

Function Get-Folder($initialDirectory)

{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null

    $foldername = New-Object System.Windows.Forms.FolderBrowserDialog
    $foldername.Description = "Select a folder"
    $foldername.rootfolder = "MyComputer"

    if($foldername.ShowDialog() -eq "OK")
    {
        $folder += $foldername.SelectedPath
    }
    return $folder
}

$a = Get-Folder

$folder = $a
Get-ChildItem -Path $folder | SELECT Name, @{Name="Size In KB";Expression={$_.Length / 1Kb}}, Attributes, LastaccessTime, @{n='Owner';e={(get-acl $_.Fullname).Owner}}| Format-Table -AutoSize 

Export-Csv "C:\Users\DZimmermann\Desktop\Test.csv" -Delimiter ";" -Append

1 Ответ

0 голосов
/ 09 марта 2020

Как прокомментировано, использование Format-Table -AutoSize просто выводит информацию в табличном формате на консоль. Он ничего не возвращает, так что нечего писать в CSV-файл ..

В таком случае вы создадите CSV-файл и запишете туда информацию:

Get-ChildItem -Path $folder | 
    Select-Object Name, 
                  @{Name="Size In KB";Expression={$_.Length / 1Kb}}, 
                  Attributes, LastaccessTime, 
                  @{n='Owner';e={(get-acl $_.Fullname).Owner}} |
    Export-Csv "C:\Users\DZimmermann\Desktop\Test.csv" -Delimiter ";"

Это не получится Вы информация на экране. Если вы также хотите это, сначала запишите результат в переменную:

$result = Get-ChildItem -Path $folder | 
    Select-Object Name, 
                  @{Name="Size In KB";Expression={$_.Length / 1Kb}}, 
                  Attributes, LastaccessTime, 
                  @{n='Owner';e={(get-acl $_.Fullname).Owner}} 

#output on screen
$result | Format-Table -AutoSize

# write the CSV file:                  
$result | Export-Csv "C:\Users\DZimmermann\Desktop\Test.csv" -Delimiter ";"

PS Судя по названию этого вопроса, я думаю, что вам нужна только информация о файлах, а не о каталогах. Если это так , добавьте переключатель -File в командлет Get-ChildItem (для PS 3 и выше). Для версий PS ниже 3 используйте

Get-ChildItem -Path $folder | Where-Object { !$_.PSIsContainer }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...