Limpando o servidor de compartilhamento de arquivos

0

Estou tentando criar um script do PowerShell que liste todos os arquivos e pastas, a data de criação e a última data acessada, o tamanho em MB e, se possível, a última pessoa que acessou, com uma exportação para um arquivo CSV.

Eu testei alguns scripts e até recebi ajuda do outro post, mas ele não extrai todos os arquivos.

Este é o script que estou executando atualmente:

 Get-ChildItem c:\Users\iceledon -Recurse -ErrorAction SilentlyContinue |  Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-365)} |
Export-Csv "C:\Users\iceledon\Desktop\files.csv" -NoTypeInformation
    
por user931101 07.08.2018 / 00:27

1 resposta

0

Isso é tudo o que você pode obter das propriedades do arquivo. do primeiro arquivo selecionado

# This is all you can get from file properties. of the first file selected
(Get-ChildItem 'd:\temp\*.txt')[0] | Select-Object -Property *

# Results

PSPath            : Microsoft.PowerShell.Core\FileSystem::D:\temp passwordchangelog.txt
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::D:\temp
PSChildName       : 1 passwordchangelog.txt
PSDrive           : D
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             D:\temp passwordchangelog.txt
                    InternalName:     
                    OriginalFilename: 
                    FileVersion:      
                    FileDescription:  
                    Product:          
                    ProductVersion:   
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         

BaseName          : 1 passwordchangelog
Target            : {}
LinkType          : 
Name              : 1 passwordchangelog.txt
Length            : 24
DirectoryName     : D:\temp
Directory         : D:\temp
IsReadOnly        : False
Exists            : True
FullName          : D:\temp passwordchangelog.txt
Extension         : .txt
CreationTime      : 10-Jul-18 16:30:22
CreationTimeUtc   : 10-Jul-18 23:30:22
LastAccessTime    : 10-Jul-18 16:30:22
LastAccessTimeUtc : 10-Jul-18 23:30:22
LastWriteTime     : 06-Jul-18 22:16:24
LastWriteTimeUtc  : 07-Jul-18 05:16:24
Attributes        : Archive

Como você pode ver nas propriedades acima no objeto de arquivo. não há informações sobre quem acessou por último. Por fim, você tem que converter o tamanho para KB, MB, etc.

Então, você está fazendo isso ... (apenas não use a Format-Table para saída. Isso é apenas para a tela)

Get-ChildItem 'd:\temp' -Recurse -ErrorAction SilentlyContinue '
| Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-365)} '
| Select FullName,CreationTime,LastAccessTime,
    @{Name='Size(kb)';Expression={“{0:F2}” -f ($_.length/1KB)}},
    @{Name='Size(mb)';Expression={“{0:F2}” -f ($_.length/1MB)}} '
| Sort-Object -Property LastAccessTime '
| Format-Table -AutoSize

FullName                                       CreationTime       LastAccessTime     Size(kb) Size(mb)
--------                                       ------------       --------------     -------- --------
D:\temp passwordchangelog.txt                05-Jul-18 13:15:04 05-Jul-18 13:15:04 0.02     0.00    
D:\temp passwordchangelog.txt                10-Jul-18 16:30:22 10-Jul-18 16:30:22 0.02     0.00    
D:\temp passwordchangelog.txt               10-Jul-18 16:30:26 10-Jul-18 16:30:26 0.02     0.00 
...

O que você quer dizer com ...

but it does not pull all the files.

O GCI armazenará todos os arquivos solicitados, desde que você tenha as permissões para isso. Se você filtrar de qualquer maneira, isso é tudo o que será retornado.

AddDays (-365)

Isso significa que apenas me forneça arquivos com mais de. Assim, qualquer coisa que não seja mais antiga, você não obterá, por design.

    
por 07.08.2018 / 04:11