Nettoyage du serveur de partage de fichiers

0

J'ai essayé de créer un script PowerShell qui répertorie tous les fichiers et dossiers, leur date de création et leur dernier accès, leur taille en Mo et, si possible, la dernière personne à y accéder, avec une exportation dans un fichier CSV.

J'ai testé quelques scripts et même l'aide de l'autre poste, mais cela ne permet pas d'extraire tous les fichiers.

C'est le script que je suis en train d'exécuter:

 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
user931101
la source

Réponses:

0

C'est tout ce que vous pouvez obtenir à partir des propriétés du fichier. du premier fichier sélectionné

# 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\1 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\1 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\1 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

Comme vous pouvez le voir à partir des propriétés ci-dessus sur l'objet fichier. il n'y a aucune information sur qui a accédé en dernier. Enfin, vous devez convertir la longueur en Ko, Mo, etc.

Donc, vous faites ceci ... (n'utilisez pas la table de format pour la sortie. Ceci est juste pour l'écran)

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\4 passwordchangelog.txt                05-Jul-18 13:15:04 05-Jul-18 13:15:04 0.02     0.00    
D:\temp\1 passwordchangelog.txt                10-Jul-18 16:30:22 10-Jul-18 16:30:22 0.02     0.00    
D:\temp\10 passwordchangelog.txt               10-Jul-18 16:30:26 10-Jul-18 16:30:26 0.02     0.00 
...

Que veux-tu dire par...

mais il ne tire pas tous les fichiers.

GCI utilisera tous les fichiers que vous lui demandez, pourvu que vous disposiez des autorisations nécessaires. Si vous filtrez de toute façon, c'est tout ce qui sera retourné.

AddDays (-365)

Cela signifie, ne me donnez que des fichiers plus anciens que. Ainsi, tout ce qui n’est pas plus ancien que vous n’obtiendrez pas, par conception.

postanote
la source