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

This entry was posted in Funktsioonid, PowerShell and tagged , , . Bookmark the permalink.

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s