PowerShell: Faililist CSV-sse
From ICO wiki
Ülessanne
Korjab rekursiivselt kokku failide nimed, asukohad ja laiendid ning arvutab räsid, tulemuse kirjutab CSV-sse.
Skript
<#
.Synopsis
Korjab rekursiivselt kokku failide nimed, asukohad ja laiendid ning arvutab räsid, tulemuse kirjutab CSV-sse.
.DESCRIPTION
Parameetriks saab kaasa anda kataloogi, mille sisust nimekirja soovitakse, vaikimisi kasutatakse skripti käivitamise asukohta. Tulemus kirjutatakse kataloogi failid.csv faili.
.EXAMPLE
C:\PS>.\PS_kodutoo_RagnarPlint.ps1
C:\PS>.\PS_kodutoo_RagnarPlint.ps1 C:\failid
.NOTES
Autor: Ragnar Plint
Versioon: 1
Muutmise kuup2ev: 26.05.2012
.LINK
https://wiki.itcollege.ee/index.php/PowerShell:_Faililist_CSV-sse
#>
# Parameetrite kontroll
#Kui argument on määratud, siis kontrollime, kas tegemist on kataloogiga.
Param(
[Parameter(Mandatory=$false,ValueFromPipeline=$true)]
[ValidateScript({Test-Path $_})]
[String]$Kataloog = (Get-Location)
)
#Hashi arvutamise funktsioon, argumendita arvutab MD5 - http://www.techmumbojumblog.com/?p=304
function Get-Checksum($file, $crypto_provider) {
if ($crypto_provider -eq $null) {
$crypto_provider = new-object 'System.Security.Cryptography.MD5CryptoServiceProvider';
}
$file_info = get-item $file;
trap { ;
continue } $stream = $file_info.OpenRead();
if ($? -eq $false) {
return $null;
}
$bytes = $crypto_provider.ComputeHash($stream);
$checksum = '';
foreach ($byte in $bytes) {
$checksum += $byte.ToString('x2');
}
$stream.close() | out-null;
return $checksum;
}
#Käime kataloogi läbi, iga leitud faili kohta teeme objekti ning objektid lisame listi
$List = @()
$Failid = Get-Childitem $Kataloog -Recurse
foreach ($Fail in $Failid)
{
$Obj = New-Object PSObject
$md5 = Get-Checksum($Fail.FullName)
$Obj | add-member NoteProperty Nimi $Fail.Name
$Obj | add-member NoteProperty Laiend $Fail.Extension
$Obj | add-member NoteProperty Asukoht $Fail.DirectoryName
$Obj | add-member NoteProperty Räsi $md5
$List += $Obj
}
#Ekspordime listi
$List | Export-CSV $Kataloog\failid.csv -notypeinformation -encoding UTF8