PowerShell: Faililist CSV-sse

From ICO wiki
Jump to navigationJump to search


Ü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