Public/Set-Credential.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function Set-Credential {
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute(
        "PSUseShouldProcessForStateChangingFunctions", 
        "", 
        Justification = "Only changes default parameters for remoting cmdlets"
    )]
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,ParameterSetName='CredentialName')]
        [ValidateNotNullOrEmpty()]
        [string]
        $Name
        ,
        [Parameter(Mandatory,ParameterSetName='CredentialFile')]
        [ValidateNotNullOrEmpty()]
        [string]
        $Path
        ,
        [Parameter(Mandatory,ParameterSetName='CredentialObject')]
        [ValidateNotNullOrEmpty()]
        [pscredential]
        $Credential
    )

    if ($PSCmdlet.ParameterSetName -ieq 'CredentialName') {
        $Path = Join-Path -Path $PSScriptRoot -ChildPath "$Name.clixml"
    }
    if (-not (Test-Path -Path $Path)) {
        throw ('Credential file {0} not found. Aborting.' -f $Path)
    }
    $Credential = Import-Clixml -Path $Path

    $PSDefaultParameterValues.'Invoke-Command:Credential'   = $Credential
    $PSDefaultParameterValues.'Enter-PSSession:Credential'  = $Credential
    $PSDefaultParameterValues.'New-PSSession:Credential'    = $Credential
    $PSDefaultParameterValues.'New-CimSession:Credential'   = $Credential
    $PSDefaultParameterValues.'Invoke-CimMethod:Credential' = $Credential
    $PSDefaultParameterValues.'New-CimInstance:Credential'  = $Credential
}