This script will delete and then re-add windows credential manager entries via the cmdkey command line utility. I use this when I have to change windows account login to update all the termserv entries so I don’t have to save them all again. Use at your own risk.
cls
$objects = @();
$select = @('Target:', 'Type:', 'User:')
[int]$counter = 0;
$obj = New-Object -TypeName PSObject -Property @{
Target = ''
Type = ''
User = ''
}
$creds = cmdkey /list | Select-String $select
$creds | %{
$counter++;
[string]$line = $_.ToString()
switch -Wildcard ($_){
"*Target:*"{
$obj.Target = $line.Substring($line.IndexOf(':')+2, $line.Length - $line.IndexOf(':')-2)
break;
}
"*Type:*"{
$obj.Type = $line.Substring($line.IndexOf(':')+2, $line.Length - $line.IndexOf(':')-2)
break;
}
"*User:*"{
$obj.User = $line.Substring($line.IndexOf(':')+2, $line.Length - $line.IndexOf(':')-2)
break;
}
}
if($counter % 3 -eq 0){
$objects += $obj;
$obj = New-Object -TypeName PSObject -Property @{
Target = ''
Type = ''
User = ''
}
}
}
$userName = 'domain\login'
$password = 'password'
$objects | where{$_.Target -like "*TERMSRV/*"} | %{
$string = $_.Target
$string = $string.Substring($string.LastIndexOf("=")+1)
$cmd = "cmdkey /delete:$string"
Invoke-Expression -Command $cmd
$cmd = "cmdkey /add:$string /user:$userName /pass:$password"
Invoke-Expression -Command $cmd
}
Leave a comment