Skip to content

Commit

Permalink
Option to output directly to clipboard
Browse files Browse the repository at this point in the history
Fixes #7
  • Loading branch information
latkin committed Sep 9, 2016
1 parent 3b3bcbf commit 128b252
Showing 1 changed file with 43 additions and 17 deletions.
60 changes: 43 additions & 17 deletions 1poshword.psm1
@@ -1,9 +1,29 @@
#Requires -Version 3
Set-StrictMode -Version 2
$errorActionPreference = 'Stop'
$isWindows,$isOSX,$isLinux =
if($psVersionTable.PSVersion.Major -ge 6){ $isWindows,$isOSX,$isLinux }
else { $true,$false,$false }

$1passwordRoot = "${env:userprofile}\Dropbox\1Password\1Password.agilekeychain\data\default"

function ClipboardCopy
{
param(
[string[]] $data
)

if($isWindows) {
$data | clip.exe
} elseif($isOSX) {
$data | pbcopy
} elseif($isLinux -and (gcm xclip)) {
$data | xclip
} else {
Write-Error "Unable to locate clipboard utility"
}
}

function DecodeSaltedString
{
param(
Expand Down Expand Up @@ -210,16 +230,18 @@ function Unprotect-1PEntry
[Parameter(Mandatory = $true, Position = 0)]
[string] $Name,

[Parameter(Mandatory = $false)]
[PSCredential] $Credential = ($null),

[Parameter(Mandatory = $false, ParameterSetName = 'ascredential')]
[Parameter(ParameterSetName = 'ascredential')]
[switch] $AsCredential,

[Parameter(Mandatory = $false, ParameterSetName = 'passwordonly')]
[Parameter(ParameterSetName = 'passwordonly')]
[switch] $PasswordOnly,

[Parameter(Mandatory = $false)]
[Parameter(ParameterSetName = 'plain')]
[Parameter(ParameterSetName = 'passwordonly')]
[switch] $ToClipboard,

[ValidateScript({Test-Path $_ -PathType Container})]
[string] $1PasswordRoot = ($script:1PasswordRoot)
)
Expand Down Expand Up @@ -250,20 +272,24 @@ function Unprotect-1PEntry

$decrypted = DecryptItem $item.ID $plainPass $1passwordRoot

switch($psCmdlet.ParameterSetName) {
'plain' {
$decrypted.Username
$decrypted.Password
}
'passwordonly' {
$decrypted.Password
$result =
switch($psCmdlet.ParameterSetName) {
'plain' {
$decrypted.Username
$decrypted.Password
}
'passwordonly' {
$decrypted.Password
}
'ascredential' {
$securePass = New-Object SecureString
$decrypted.Password.ToCharArray() |%{ $securePass.AppendChar($_) }
New-Object PSCredential @($decrypted.Username, $securePass)
}
}
'ascredential' {
$securePass = New-Object SecureString
$decrypted.Password.ToCharArray() |%{ $securePass.AppendChar($_) }
New-Object PSCredential @($decrypted.Username, $securePass)
}
}

if($toClipboard) { ClipboardCopy $result }
else { $result }
}

New-Alias -Name 1p -Value Unprotect-1PEntry
Expand Down

0 comments on commit 128b252

Please sign in to comment.