From 1e7dd78c2b45479ff91a6db6a92825c5a535d93f Mon Sep 17 00:00:00 2001 From: Marco Blessing Date: Tue, 19 Jul 2022 14:29:25 +0200 Subject: [PATCH] adds CiscoUCSCentral connection type (#67) #### :book: Summary - adds CiscoUCSCentrall connection type in `Connect-To` and `Disconnect-From` #### :bookmark_tabs: Test Plan > :bulb: Select your test plan for the code changes. - [x] Tested via Drone.io pipeline - [ ] Custom test - [ ] No test plan ##### Details / Justification #### :books: Additional Notes Co-authored-by: OCram85 Reviewed-on: https://gitea.ocram85.com/OCram85/PSCredentialStore/pulls/67 --- docs/Connect-To.md | 404 +++++++++++++++-------------- docs/Disconnect-From.md | 257 +++++++++--------- docs/Readme.md | 2 +- docs/Test-CredentialStoreItem.md | 9 +- src/Connection/Connect-To.ps1 | 29 ++- src/Connection/Disconnect-From.ps1 | 42 ++- 6 files changed, 407 insertions(+), 336 deletions(-) diff --git a/docs/Connect-To.md b/docs/Connect-To.md index 719aa63..51d1cf6 100644 --- a/docs/Connect-To.md +++ b/docs/Connect-To.md @@ -1,195 +1,209 @@ ---- -external help file: ModuleRoot-help.xml -Module Name: PSCredentialStore -online version: -schema: 2.0.0 ---- - -# Connect-To - -## SYNOPSIS -Connects to the given host using the stored CredentialStoreItem. - -## SYNTAX - -### Private (Default) -``` -Connect-To -RemoteHost [-Identifier ] -Type [-Credentials ] [-PassThru] - [] -``` - -### Shared -``` -Connect-To -RemoteHost [-Identifier ] -Type [-Credentials ] [-Shared] - [-Path ] [-PassThru] [] -``` - -## DESCRIPTION -Establish a connection to the selected host using a stored CredentialStoreItem. - -## EXAMPLES - -### EXAMPLE 1 -``` -Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs -``` - -### EXAMPLE 2 -``` -Connect-To -RemoteHost "ftp.myside.local" -Type FTP -``` - -### EXAMPLE 3 -``` -Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS -``` - -### EXAMPLE 4 -``` -Connect-To -RemoteHost "esx01.myside.local" -Type VMware -``` - -### EXAMPLE 5 -``` -Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer -``` - -### EXAMPLE 6 -``` -Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP -``` - -### EXAMPLE 7 -``` -Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS -``` - -## PARAMETERS - -### -Credentials -Use this parameter to bypass the stored credentials. -Without this parameter Connect-To tries to read the -needed credentials from the CredentialStore. -If you provide this parameter you skip this lookup behavior. -So you can use it to enable credentials without preparing any user interaction. - -```yaml -Type: PSCredential -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Identifier -Defaults to "". -Specify a string, which separates two CredentialStoreItems for the -same hostname. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -PassThru -Returns the value from the underlying connection type function. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Path -Define a custom path to a shared CredentialStore. - -```yaml -Type: String -Parameter Sets: Shared -Aliases: - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -RemoteHost -Specify the host, for which you would like to change the credentials. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Shared -Switch to shared mode with this param. -This enforces the command to work with a shared CredentialStore which -can be decrypted across systems. - -```yaml -Type: SwitchParameter -Parameter Sets: Shared -Aliases: - -Required: True -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Type -Specify the host type of the target. -Currently implemented targets are: Possible connection values are: -CiscoUcs, FTP, NetAppFAS, VMware, CisServer, ExchangeHTTP, ExchangeHTTPS, SCP. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -### [None] -## OUTPUTS - -### [None] -## NOTES - -## RELATED LINKS +--- +external help file: ModuleRoot-help.xml +Module Name: PSCredentialStore +online version: +schema: 2.0.0 +--- + +# Connect-To + +## SYNOPSIS +Connects to the given host using the stored CredentialStoreItem. + +## SYNTAX + +### Private (Default) +``` +Connect-To -RemoteHost [-Identifier ] -Type [-Credentials ] [-PassThru] + [] +``` + +### Shared +``` +Connect-To -RemoteHost [-Identifier ] -Type [-Credentials ] [-Shared] + [-Path ] [-PassThru] [] +``` + +## DESCRIPTION +Establish a connection to the selected host using a stored CredentialStoreItem. + +## EXAMPLES + +### EXAMPLE 1 +``` +Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs +``` + +### EXAMPLE 2 +``` +Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral' +``` + +### EXAMPLE 3 +``` +Connect-To -RemoteHost "ftp.myside.local" -Type FTP +``` + +### EXAMPLE 4 +``` +Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS +``` + +### EXAMPLE 5 +``` +Connect-To -RemoteHost "esx01.myside.local" -Type VMware +``` + +### EXAMPLE 6 +``` +Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer +``` + +### EXAMPLE 7 +``` +Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP +``` + +### EXAMPLE 8 +``` +Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS +``` + +## PARAMETERS + +### -Credentials +Use this parameter to bypass the stored credentials. +Without this parameter Connect-To tries to read the +needed credentials from the CredentialStore. +If you provide this parameter you skip this lookup behavior. +So you can use it to enable credentials without preparing any user interaction. + +```yaml +Type: PSCredential +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Identifier +Defaults to "". +Specify a string, which separates two CredentialStoreItems for the +same hostname. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns the value from the underlying connection type function. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path +Define a custom path to a shared CredentialStore. + +```yaml +Type: String +Parameter Sets: Shared +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RemoteHost +Specify the host, for which you would like to change the credentials. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Shared +Switch to shared mode with this param. +This enforces the command to work with a shared CredentialStore which +can be decrypted across systems. + +```yaml +Type: SwitchParameter +Parameter Sets: Shared +Aliases: + +Required: True +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Type +Specify the host type of the target. +Currently implemented targets are: Possible connection values are: + +- CiscoUcs +- CiscoUcsCentral +- CisServer +- ExchangeHTTP +- ExchangeHTTPS +- FTP +- NetAppFAS +- SCP +- VMware + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### [None] +## OUTPUTS + +### [None] +## NOTES + +## RELATED LINKS diff --git a/docs/Disconnect-From.md b/docs/Disconnect-From.md index 3d06081..5dbb8ed 100644 --- a/docs/Disconnect-From.md +++ b/docs/Disconnect-From.md @@ -1,124 +1,133 @@ ---- -external help file: ModuleRoot-help.xml -Module Name: PSCredentialStore -online version: -schema: 2.0.0 ---- - -# Disconnect-From - -## SYNOPSIS -Terminates a session established with Connect-To using a CredentialStoreItem. - -## SYNTAX - -``` -Disconnect-From [-RemoteHost] [-Type] [-Force] [] -``` - -## DESCRIPTION -Terminates a session established with Connect-To using a CredentialStoreItem. - -## EXAMPLES - -### EXAMPLE 1 -``` -Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs -``` - -### EXAMPLE 2 -``` -Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP -``` - -### EXAMPLE 3 -``` -Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS -``` - -### EXAMPLE 4 -``` -Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -``` - -### EXAMPLE 5 -``` -Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True -``` - -### EXAMPLE 6 -``` -Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer -``` - -### EXAMPLE 7 -``` -Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP -``` - -### EXAMPLE 8 -``` -Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS -``` - -## PARAMETERS - -### -Force -Force the disconnect, even if the disconnect would fail. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -RemoteHost -Specify the remote endpoint, whose session you would like to terminate. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Type -Specify the host type of the target. -Currently implemented targets are: CiscoUcs, FTP, NetAppFAS, VMware, -CisServer, ExchangeHTTP, ExchangeHTTPS, SCP. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -### [None] -## OUTPUTS - -### [None] -## NOTES - -## RELATED LINKS +--- +external help file: ModuleRoot-help.xml +Module Name: PSCredentialStore +online version: +schema: 2.0.0 +--- + +# Disconnect-From + +## SYNOPSIS +Terminates a session established with Connect-To using a CredentialStoreItem. + +## SYNTAX + +``` +Disconnect-From [-RemoteHost] [-Type] [-Force] [] +``` + +## DESCRIPTION +Terminates a session established with Connect-To using a CredentialStoreItem. + +## EXAMPLES + +### EXAMPLE 1 +``` +Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs +``` + +### EXAMPLE 2 +``` +Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP +``` + +### EXAMPLE 3 +``` +Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS +``` + +### EXAMPLE 4 +``` +Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware +``` + +### EXAMPLE 5 +``` +Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True +``` + +### EXAMPLE 6 +``` +Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer +``` + +### EXAMPLE 7 +``` +Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP +``` + +### EXAMPLE 8 +``` +Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS +``` + +## PARAMETERS + +### -Force +Force the disconnect, even if the disconnect would fail. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: False +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RemoteHost +Specify the remote endpoint, whose session you would like to terminate. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Type +Specify the host type of the target. +Currently implemented targets are: + +- CiscoUcs +- CiscoUcsCentral +- FTP +- NetAppFAS +- VMware +- CisServer +- ExchangeHTTP +- ExchangeHTTPS +- SCP + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### [None] +## OUTPUTS + +### [None] +## NOTES + +## RELATED LINKS diff --git a/docs/Readme.md b/docs/Readme.md index 5da4a0c..739af7e 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -2,7 +2,7 @@ Module Name: PSCredentialStore Module Guid: 6800e192-9df8-4e30-b253-eb2c799bbe84 Download Help Link: {{ Update Download Link }} -Help Version: {{ Update Help Version }} +Help Version: {{ Please enter version of help manually (X.X.X.X) format }} Locale: en-US --- diff --git a/docs/Test-CredentialStoreItem.md b/docs/Test-CredentialStoreItem.md index ea3a1a2..28b4f4b 100644 --- a/docs/Test-CredentialStoreItem.md +++ b/docs/Test-CredentialStoreItem.md @@ -28,11 +28,10 @@ Use this cmdlet for basic checks with a single item. Check the item first with this function before you try to interact with it. -> :bulb: Breaking Change for \`v1.1.0+\`: -> -> Test-CredentialStoreItem will return \`$false\` even if the store doesn't exist. -> We removed the terminating -> error and replaced it with a warning message. +Breaking Change for \`v1.1.0+\`: +Test-CredentialStoreItem will return \`$false\` even if the store doesn't exist. +We removed the terminating +error and replaced it with a warning message. ## EXAMPLES diff --git a/src/Connection/Connect-To.ps1 b/src/Connection/Connect-To.ps1 index 5c198a3..b14ffc5 100644 --- a/src/Connection/Connect-To.ps1 +++ b/src/Connection/Connect-To.ps1 @@ -15,7 +15,16 @@ function Connect-To { .PARAMETER Type Specify the host type of the target. Currently implemented targets are: Possible connection values are: - CiscoUcs, FTP, NetAppFAS, VMware, CisServer, ExchangeHTTP, ExchangeHTTPS, SCP. + + - CiscoUcs + - CiscoUcsCentral + - CisServer + - ExchangeHTTP + - ExchangeHTTPS + - FTP + - NetAppFAS + - SCP + - VMware .PARAMETER Credentials Use this parameter to bypass the stored credentials. Without this parameter Connect-To tries to read the @@ -41,6 +50,9 @@ function Connect-To { .EXAMPLE Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs + .EXAMPLE + Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral' + .EXAMPLE Connect-To -RemoteHost "ftp.myside.local" -Type FTP @@ -79,6 +91,7 @@ function Connect-To { [Parameter(Mandatory = $true, ParameterSetName = 'Private')] [ValidateSet( 'CiscoUcs', + 'CiscoUcsCentral', 'FTP', 'NetAppFAS', 'VMware', @@ -189,6 +202,20 @@ function Connect-To { Write-Error @MessageParams } } + "CiscoUcsCentral" { + try { + $handle = Connect-UcsCentral -Name $RemoteHost -Credential $creds -NotDefault + $ExecutionContext.SessionState.PSVariable.Set('DefaultUcsCentral', $handle) + } + + catch { + $MessageParams = @{ + Message = ('Unable to connect to {0} using {1}' -f $RemoteHost, $Type) + ErrorAction = 'Stop' + } + Write-Error @MessageParams + } + } "FTP" { # First establish the FTP session $WinSCPConParams = @{ diff --git a/src/Connection/Disconnect-From.ps1 b/src/Connection/Disconnect-From.ps1 index a78ae1f..ef8b157 100644 --- a/src/Connection/Disconnect-From.ps1 +++ b/src/Connection/Disconnect-From.ps1 @@ -14,8 +14,17 @@ function Disconnect-From { same hostname. .PARAMETER Type - Specify the host type of the target. Currently implemented targets are: CiscoUcs, FTP, NetAppFAS, VMware, - CisServer, ExchangeHTTP, ExchangeHTTPS, SCP. + Specify the host type of the target. Currently implemented targets are: + + - CiscoUcs + - CiscoUcsCentral + - FTP + - NetAppFAS + - VMware + - CisServer + - ExchangeHTTP + - ExchangeHTTPS + - SCP .PARAMETER Force Force the disconnect, even if the disconnect would fail. @@ -64,6 +73,7 @@ function Disconnect-From { [Parameter(Mandatory = $true)] [ValidateSet( 'CiscoUcs', + 'CiscoUcsCentral', 'FTP', 'NetAppFAS', 'VMware', @@ -85,10 +95,10 @@ function Disconnect-From { "VMware" { try { if ($Force) { - Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop -Force:$true + Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true } else { - Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop + Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' } } @@ -104,10 +114,10 @@ function Disconnect-From { "CisServer" { try { if ($Force) { - Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop -Force:$true + Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true } else { - Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop + Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' } } @@ -171,10 +181,24 @@ function Disconnect-From { Write-Error @MessageParams } } + "CiscoUCSCentral" { + try { + $handle = Connect-UcsCentral -Name $RemoteHost -Credential $creds -NotDefault + $ExecutionContext.SessionState.PSVariable.Set('DefaultUcsCentral', $handle) + } + catch { + $MessageParams = @{ + Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type + ErrorAction = 'Stop' + } + Write-Error @MessageParams + } + } + "ExchangeHTTP*" { try { - Get-Variable -Name 'PSExchangeRemote' -Scope Global -ErrorAction Stop - Remove-PSSession -Session $Global:PSExchangeRemote -ErrorAction Stop + Get-Variable -Name 'PSExchangeRemote' -Scope 'Global' -ErrorAction 'Stop' + Remove-PSSession -Session $Global:PSExchangeRemote -ErrorAction 'Stop' } catch { $MessageParams = @{ @@ -206,6 +230,4 @@ function Disconnect-From { } } } - - end {} }