Szintén nem csak AD környezetben, hanem helyi gépen is feladat a belépési adatok ellenőrzése. Gondoljunk arra a helyzetre, hogy a szkriptünk paraméterként vár vagy bekér egy credential objektumot a Get‑Credential cmdlet segítségével. Ilyenkor megadjuk a felhasználónevet és jelszót, de maga a cmdlet nem ellenőrzi ezek helyességét, bármit elfogad.
Az alábbi függvény a bejelentkezési adatokat ellenőrzi. Paraméterként egy credential objektumot vár és megadhatjuk a –DomainContext kapcsolóval, hogy ez egy tartományi fiók-e.
function Check-Credential{
param(
$cred,
[switch] $DomainContext
)
$username = $cred.UserName
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
[Runtime.InteropServices.Marshal]::SecureStringToBSTR( $cred.Password )
)
$context, $user = $username -split "\\"
if($DomainContext){
$contexttype = "domain"
}
else{
$contexttype = "machine"
}
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$obj = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $contexttype,$context
try{
$obj.ValidateCredentials($username, $password)
}
catch{
$false
}
}
A függvény True vagy False értéket ad, attól függően, hogy helyesek-e a belépési adatok.