-
Notifications
You must be signed in to change notification settings - Fork 1
/
Set-VaultCredential.ps1
60 lines (56 loc) · 2.2 KB
/
Set-VaultCredential.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<#
.SYNOPSIS
Store the given credential in the PasswordVault for a given resource.
.PARAMETER Resource
The resource to remove from the PasswordVault
.PARAMETER User
The user connected to the resource
.PARAMETER Password
The password fot the given user
.PARAMETER Credential
The user stored in Credential connected to the resource
.EXAMPLE
Set-Credential -Resource https://msdn.microsoft.com -User CONTOSO\john.doe -Password 's3cr3t'
Description
-----------
Stores the credentials for the user john.doe on domain CONTOSO for the resource https://msdn.microsoft.com
.EXAMPLE
Set-Credential -Resource https://msdn.microsoft.com -Credential (Get-Credential CONTOSO\john.doe)
Description
-----------
Stores the credentials for the user john.doe on domain CONTOSO for the resource https://msdn.microsoft.com
The password will be asked in the dialog box generated by Get-Credential
#>
function Set-VaultCredential #{{{
{
[CmdletBinding(DefaultParameterSetName='Credential')]
Param(
[Parameter(Position=1, Mandatory=$true, ValueFromPipeLine=$true, ValueFromPipelineByPropertyName = $true)]
[ValidateNotNullOrEmpty()]
[string[]] $Resource,
[Parameter(Position=2, ParameterSetName='Credential', Mandatory=$true, ValueFromPipelineByPropertyName = $true)]
[System.Management.Automation.PSCredential] $Credential,
[Parameter(Position=2, ParameterSetName='Plain', Mandatory=$true, ValueFromPipelineByPropertyName = $true)]
[ValidateNotNullOrEmpty()]
[Alias('UserName', 'UserId', 'Name')]
[string] $User,
[Parameter(Position=3, ParameterSetName='Plain', Mandatory=$true, ValueFromPipelineByPropertyName = $true)]
[ValidateNotNullOrEmpty()]
[string] $Password
)
process
{
$vault = New-Object Windows.Security.Credentials.PasswordVault
$Resource | ForEach {
if ($PSCmdlet.ParameterSetName -eq 'Credential')
{
$vault_credential = New-Object Windows.Security.Credentials.PasswordCredential $_,$Credential.UserName,$Credential.GetNetworkCredential().Password
}
else
{
$vault_credential = New-Object Windows.Security.Credentials.PasswordCredential $_,$User,$Password
}
$vault.Add($vault_credential)
}
}
} # }}}