Cmdlets/New-RegistryCredential/New-RegistryCredential.psm1
Function New-RegistryCredential { [CmdletBinding()] param( [Parameter (Mandatory=$True, Position=0)] [String] $ApplicationName, [Parameter (Mandatory=$True, Position=1)] [String] $OrgName, [Parameter (Mandatory=$True, Position=2)] [String] $AccountDescription, [Parameter (Mandatory=$False, Position=3)] [System.Management.Automation.PSCredential] $SecureCredential ) $CredentialExists = CheckForExistingRegistryCredential -ApplicationName $ApplicationName ` -OrgName $OrgName ` -AccountDescription $AccountDescription if(!($CredentialExists)) { Write-Verbose "Credential matching specified parameters does not exist`r`nOK to proceed" if($null -eq $SecureCredential) { $SecureCredential = Get-Credential -Message "Enter the service account credential in `'DOMAIN\Username`' or`' Username@Domain.com`' format" $SecurePasswordString = $SecureCredential.Password | ConvertFrom-SecureString } Write-Verbose "Captured credential for user `'$($SecureCredential.UserName)`'" Write-Verbose "Attempting to create path to store credential object" New-Item -Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials" -Name "$($AccountDescription)" -Force if(Test-Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)") { Write-Verbose "Successfully created path `'HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescrioption)`' to store credential object" } else { throw "Unable to create path `'`KHCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)`'." } try { Write-Verbose "Attempting to store username and encrypted password to the registry" Set-ItemProperty -Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)" -Name Username -Value $SecureCredential.Username -ErrorAction SilentlyContinue Set-ItemProperty -Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)" -Name Password -Value $($SecurePasswordString) -ErrorAction SilentlyContinue if(((Get-ItemProperty -Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)" -Name "UserName" -ErrorAction SilentlyContinue).UserName) -and ((Get-ItemProperty -Path "HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)" -Name "Password" -ErrorAction SilentlyContinue).Password)) { Write-Verbose "Successfully stored username and password to `'HKCU:\Software\$($ApplicationName)\$($OrgName)\Credentials\$($AccountDescription)`'" } } catch { throw "Could not commit values to registry`r`nCredential not saved" } Write-Verbose "Credential `'$($AccountDescription) has been created.`r`nUser `'$($SecureCredential.UserName)`' has been assigned" } else { throw "Credential for account '$AccountDescription' already exists in org '$OrgName' for application '$ApplicationName'" } return $SecureCredential } |