Public/Set-PSUCredentialToManager.ps1

function Set-PSUCredentialToManager {
    <#
    .SYNOPSIS
        Stores a credential in Windows Credential Manager.
 
    .DESCRIPTION
        Stores the specified username and password under the given target name in Windows Credential Manager.
 
    .PARAMETER Target
        (Mandatory) The name under which to store the credential.
 
    .PARAMETER Username
        (Mandatory) The username to store.
 
    .PARAMETER Password
        (Mandatory) The password to store.
 
    .PARAMETER Comment
        (Optional) A comment to associate with the credential.
 
    .EXAMPLE
        Set-PSUCredentialToManager -Target "acred" -Username "A092721" -Password "123123123"
 
    .EXAMPLE
        Set-PSUCredentialToManager -Target "prod-db-server" -Username "dbadmin" -Password "SecurePass123" -Comment "Production DB"
 
    .OUTPUTS
        [PSCustomObject]
 
    .NOTES
        Author: Lakshmanachari Panuganti
        Date: 31st October 2025
 
    .LINK
        https://github.com/lakshmanachari-panuganti/OMG.PSUtilities/tree/main/OMG.PSUtilities.Core
        https://www.linkedin.com/in/lakshmanachari-panuganti/
        https://www.powershellgallery.com/packages/OMG.PSUtilities.Core
    #>


    [CmdletBinding(DefaultParameterSetName = 'ByUserPass')]
    [Alias("setcred")]
    param (
        [Parameter(Mandatory, ParameterSetName = 'ByUserPass')]
        [Parameter(Mandatory, ParameterSetName = 'ByCredential')]
        [string]$Target,

        [Parameter(Mandatory, ParameterSetName = 'ByUserPass')]
        [string]$Username,

        [Parameter(Mandatory, ParameterSetName = 'ByUserPass')]
        [string]$Password,

        [Parameter(Mandatory, ParameterSetName = 'ByCredential')]
        [PSCredential]$Credential,

        [string]$Comment = "Set via Set-PSUCredentialToManager function"
    )

    process {
        if ($PSCmdlet.ParameterSetName -eq 'ByCredential') {
            $Username = $Credential.UserName
            $Password = $Credential.GetNetworkCredential().Password
        }

        try {
            $CredentialManager = [CredentialManager.CredMan]::Store(
                $Target, 
                $Username, 
                $Password, 
                $Comment
            )

            if ($CredentialManager) {
                [PSCustomObject]@{
                    Target     = $Target
                    Username   = $Username
                    Status     = 'Success'
                    PSTypeName = 'PSU.CredentialManager.StoreResult'
                }
            } else {
                $err = [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()
                Write-Error "Failed to store credential. Win32Error: $err"
                [PSCustomObject]@{
                    Target     = $Target
                    Username   = $Username
                    Status     = 'Failed'
                    Error      = $err
                    PSTypeName = 'PSU.CredentialManager.StoreResult'
                }
            }
        } catch {
            $PSCmdlet.ThrowTerminatingError($_)
        }
    }
}