-
Notifications
You must be signed in to change notification settings - Fork 1
/
EXAMPLES.ps1
97 lines (68 loc) · 3.55 KB
/
EXAMPLES.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
################################### Examples ###################################
# Connect to Pleasant Password Server
Connect-Pps -Uri https://password.company.tld:10001
# Get ID of private folder
$allGroups = Get-PpsGroup -All
$privateId = $allGroups.Children.Where({$_.Name -eq 'Private Folders'}).Item(0).Children.Item(0).Id
# Create new credential entry in the private folder
$credId = New-PpsEntry -GroupId $privateId -Name 'Name Of Password Entry' -Username 'username' -Password 'P@ssw0rd' | Select-Object -ExpandProperty Id
# Get credential entry
$cred = Get-PpsEntry -Id $credId
# Change credential entry
$cred.Name = 'New Name'
Set-PpsEntry -Entry $cred
# Get info about credentials in a folder
(Get-PpsGroup -Id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee).Credentials | Select-Object -Property Id,Name,Username
# Copy folder structure (not entries, only folders)
$SrcGroupId = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
$DstGroupId = '11111111-2222-3333-4444-555555555555'
function ProcessGroup ($SrcGroupId, $DstGroupId)
{
$Group = Get-PpsGroup -Id $SrcGroupId
foreach ($Child in $Group.Children)
{
"Creating $DstGroupId -> $($Child.Name)"
$newChild = New-PpsGroup -ParentId $DstGroupId -Name $Child.Name
ProcessGroup -SrcGroupId $Child.Id -DstGroupId $newChild.Id
}
}
ProcessGroup -SrcGroupId $SrcGroupId -DstGroupId $DstGroupId
# Sync from one folder to another
Export-PpsEntry -RootPath 'Root/Private Folders/xxx/export' | Import-PpsEntry -RootPath 'Root/Private Folders/xxx/import'
########## Pleasant Password Server to Pleasant Password Server sync ###########
# Connect to first Pleasant Password Server
Connect-Pps -Uri password1.company.tld -Session s1
# Connect to second Pleasant Password Server
Connect-Pps -Uri password2.company.tld -Session s2
# Sync from first to second Pleasant Password Server
Export-PpsEntry -Session s1 -RootPath 'Root/Private Folders/xxx/export' | Import-PpsEntry -Session s2 -RootPath 'Root/Private Folders/xxx/import'
################### KeePass to Pleasant Password Server sync ###################
# Install KeePassImportExport module
Install-Module -Name KeePassImportExport -Scope CurrentUser
# Connect to KeePass database
$kdbx = Get-Item -Path C:\path\to\keepass\file.kdbx
$masterKey = Get-Credential -Message MasterKey -UserName NOT_USED
$db = $kdbx.BaseName
if (-not (Get-KeePassDatabaseConfiguration -DatabaseProfileName $db))
{
New-KeePassDatabaseConfiguration -DatabaseProfileName $db -DatabasePath $kdbx.FullName -UseMasterKey
}
# Connect to Pleasant Password Server
Connect-Pps -Uri password.company.tld
# Sync from KeePass to Pleasant Password Server
Export-KeePassEntry -RootPath toplevel/export -DatabaseProfileName $db -MasterKey $masterKey | Import-PpsEntry -RootPath 'Root/Private Folders/xxx/import'
################### Pleasant Password Server to KeePass sync ###################
# Install KeePassImportExport module
Install-Module -Name KeePassImportExport -Scope CurrentUser
# Connect to KeePass database
$kdbx = Get-Item -Path C:\path\to\keepass\file.kdbx
$masterKey = Get-Credential -Message MasterKey -UserName NOT_USED
$db = $kdbx.BaseName
if (-not (Get-KeePassDatabaseConfiguration -DatabaseProfileName $db))
{
New-KeePassDatabaseConfiguration -DatabaseProfileName $db -DatabasePath $kdbx.FullName -UseMasterKey
}
# Connect to Pleasant Password Server
Connect-Pps -Uri password.company.tld
# Sync from Pleasant Password Server to KeePass
Export-PpsEntry -RootPath 'Root/Private Folders/xxx/import' | Import-KeePassEntry -RootPath toplevel/import -DatabaseProfileName $db -MasterKey $masterKey