From d1ff01f11806b4b0e126fd1f1bc650af0937be2d Mon Sep 17 00:00:00 2001 From: Ryan Ephgrave Date: Sat, 6 Feb 2021 21:44:04 -0600 Subject: [PATCH] added invoke command --- .../{ => Commands}/Get-GMSACredential.ps1 | 0 .../Commands/Invoke-GMSACommand.ps1 | 42 ++++++++++++++++++ GMSACredential/GMSACredential.psd1 | 8 ++-- GMSACredential/GMSACredential.psm1 | 15 ++++++- .../refs/net46/SimpleImpersonation.dll | Bin 0 -> 10752 bytes .../netstandard2.0/SimpleImpersonation.dll | Bin 0 -> 10752 bytes .../System.Security.Principal.Windows.dll | Bin 0 -> 39056 bytes 7 files changed, 59 insertions(+), 6 deletions(-) rename GMSACredential/{ => Commands}/Get-GMSACredential.ps1 (100%) create mode 100644 GMSACredential/Commands/Invoke-GMSACommand.ps1 create mode 100644 GMSACredential/refs/net46/SimpleImpersonation.dll create mode 100644 GMSACredential/refs/netstandard2.0/SimpleImpersonation.dll create mode 100644 GMSACredential/refs/netstandard2.0/System.Security.Principal.Windows.dll diff --git a/GMSACredential/Get-GMSACredential.ps1 b/GMSACredential/Commands/Get-GMSACredential.ps1 similarity index 100% rename from GMSACredential/Get-GMSACredential.ps1 rename to GMSACredential/Commands/Get-GMSACredential.ps1 diff --git a/GMSACredential/Commands/Invoke-GMSACommand.ps1 b/GMSACredential/Commands/Invoke-GMSACommand.ps1 new file mode 100644 index 0000000..ed71e62 --- /dev/null +++ b/GMSACredential/Commands/Invoke-GMSACommand.ps1 @@ -0,0 +1,42 @@ +Function Invoke-GMSACommand{ + <# + .SYNOPSIS + Helper command to invoke a scriptblock with credentials (especially helpful with GMSA creds) + + .DESCRIPTION + Will use the open source library SimpleImpersonation to invoke a ScriptBlock with the provided credentials + + .PARAMETER ScriptBlock + Script block to invoke + + .PARAMETER ArgumentList + Argument list for the scriptblock + + .PARAMETER Credential + Credential object (intended to be GMSA credentials, but can be any) + + .PARAMETER LogonType + LogonType Enum - New Credentials are good for most cases. Enum help is here: https://github.com/mj1856/SimpleImpersonation/blob/master/src/LogonType.cs + + .EXAMPLE + Invoke-GMSACommand -ScriptBlock {Write-Host 'test'} -Credential ( Get-GMSACredential -GMSAName 'MyGMSA' -Domain 'test.Domain' ) + + .NOTES + .Author: Ryan Ephgrave + #> + Param( + [ScriptBlock]$ScriptBlock, + [Object[]]$ArgumentList, + [PSCredential]$Credential, + [SimpleImpersonation.LogonType]$LogonType = [SimpleImpersonation.LogonType]::NewCredentials + ) + $script:CommandOutput = $null + $SCred = [SimpleImpersonation.UserCredentials]::new($Credential.GetNetworkCredential().Domain,$Credential.GetNetworkCredential().UserName, $Credential.GetNetworkCredential().Password) + [SimpleImpersonation.Impersonation]::RunAsUser( + $SCred, + $LogonType, + [System.Action]{ $Script:CommandOutput = Invoke-Command -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList } + ) + $script:CommandOutput + $script:CommandOutput = $null +} \ No newline at end of file diff --git a/GMSACredential/GMSACredential.psd1 b/GMSACredential/GMSACredential.psd1 index 57d98de..f75c33f 100644 --- a/GMSACredential/GMSACredential.psd1 +++ b/GMSACredential/GMSACredential.psd1 @@ -12,7 +12,7 @@ RootModule = '.\GMSACredential.psm1' # Version number of this module. -ModuleVersion = '0.5' +ModuleVersion = '0.6' # Supported PSEditions # CompatiblePSEditions = @() @@ -54,7 +54,7 @@ Description = 'Provides functions to get a usable PSCredential for a GMSA accoun # RequiredModules = @() # Assemblies that must be loaded prior to importing this module -# RequiredAssemblies = @() +#RequiredAssemblies = @('.\refs\System.Security.Principal.Windows.dll','.\refs\SimpleImpersonation.dll') # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() @@ -69,7 +69,7 @@ Description = 'Provides functions to get a usable PSCredential for a GMSA accoun # NestedModules = @() # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. -FunctionsToExport = @('Get-GMSACredential') +FunctionsToExport = @('Get-GMSACredential','Invoke-GMSACommand') # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = @() @@ -107,7 +107,7 @@ PrivateData = @{ # IconUri = '' # ReleaseNotes of this module - # ReleaseNotes = '' + ReleaseNotes = 'Added Invoke-GMSACommand' } # End of PSData hashtable diff --git a/GMSACredential/GMSACredential.psm1 b/GMSACredential/GMSACredential.psm1 index 9816b83..b03769f 100644 --- a/GMSACredential/GMSACredential.psm1 +++ b/GMSACredential/GMSACredential.psm1 @@ -1,3 +1,14 @@ -. "$PSScriptRoot\Get-GMSACredential.ps1" +if($PSVersionTable.PSVersion.Major -lt 6){ + [System.Reflection.Assembly]::LoadWithPartialName("System.Security.Principal.Windows") + $null = Add-Type -Path "$PSScriptRoot\refs\net46\SimpleImpersonation.dll" +} +else{ + $null = Add-Type -Path "$PSScriptRoot\refs\netstandard2.0\SimpleImpersonation.dll" + $null = Add-Type -Path "$PSScriptRoot\refs\netstandard2.0\System.Security.Principal.Windows.dll" +} -Export-ModuleMember -Function 'Get-GMSACredential' \ No newline at end of file +. "$PSScriptRoot\Commands\Get-GMSACredential.ps1" +. "$PSScriptRoot\Commands\Invoke-GMSACommand.ps1" + + +Export-ModuleMember -Function @('Get-GMSACredential','Invoke-GMSACommand') \ No newline at end of file diff --git a/GMSACredential/refs/net46/SimpleImpersonation.dll b/GMSACredential/refs/net46/SimpleImpersonation.dll new file mode 100644 index 0000000000000000000000000000000000000000..9b09c33f09061d604230cc47f807aff02bf10847 GIT binary patch literal 10752 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 Y&I4E!{>^@Q<-q-gQ}CAx{X9MJzbPFZ$p8QV literal 0 HcmV?d00001 diff --git a/GMSACredential/refs/netstandard2.0/System.Security.Principal.Windows.dll b/GMSACredential/refs/netstandard2.0/System.Security.Principal.Windows.dll new file mode 100644 index 0000000000000000000000000000000000000000..afd187c14918ed1567fce775f4b78269843bedb4 GIT binary patch literal 39056 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 u{Z;z+TiQEhu9_FgRXpI%G%Q&fCOwyN2}krBQK2