Jätkuks eelmisele – Isikukood ja PowerShell

Üks ei jää teiseta,

Eelmise artikli järel tekkis põhjus, vajadus ja huvi katsetada sama ka PowerShellis. Ma küll ei arva, et seda PowerShellis väga vaja aga esimeseks katsetuseks sobis küll.

Panen siis siia ühe võimaliku funktsiooni isikukoodi kontrollimiseks. Ei hakanud Helpi sisse kirjutama ega ilusaks vormistama.

Function Test-Isikukood
{
 param ([parameter(ValueFromPipeline=$true,Mandatory=$true)][string]$isikukood, [switch]$nocheck)

function m ($a, $b)
 {
 $n = 0
 for ($i = 0; $i -lt 10 ; $i++) { $n += $a[$i] * $b[$i] }
 $n % 11
 }

try
 {
 [int64]$i = $isikukood
 [datetime]$d = ("{0:0000\.00\.00}" -f (0 + ("" + (18 +("x001122xxx"[[int]::parse($isikukood.Substring(0,1))])) + $isikukood.substring(1,6))))
 if (-not $nocheck) {
 $n = m (1..9+1) ($isikukood.ToCharArray() | % { [int]::Parse($_) })
 if ($n -eq 10) {
 $n = m (3..9+1..3) ($isikukood.ToCharArray() | % { [int]::Parse($_) }) % 10
 }
 $n -eq [int]($isikukood.Substring(10,1)) -and $isikukood.Length -eq 11
 }
 else { $true }
 }
 catch
 {
 $false
 }

}

Eks siis igaüks võib paremaks teha ja kommentaare lisada

Henn

Advertisements
Rubriigid: Funktsioonid, PowerShell, sildid: , , . Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar

Täida nõutavad väljad või kliki ikoonile, et sisse logida:

WordPress.com Logo

Sa kommenteerid kasutades oma WordPress.com kontot. Logi välja / Muuda )

Twitter picture

Sa kommenteerid kasutades oma Twitter kontot. Logi välja / Muuda )

Facebook photo

Sa kommenteerid kasutades oma Facebook kontot. Logi välja / Muuda )

Google+ photo

Sa kommenteerid kasutades oma Google+ kontot. Logi välja / Muuda )

Connecting to %s