adds CiscoUCSCentral connection type (#67)

#### 📖 Summary

- adds CiscoUCSCentrall connection type in `Connect-To` and `Disconnect-From`

#### 📑 Test Plan

> 💡 Select your test plan for the code changes.

- [x] Tested via Drone.io pipeline
- [ ] Custom test
- [ ] No test plan

##### Details / Justification

<!-- Add your test details or justification for missing tests here. -->

#### 📚 Additional Notes

<!-- A place for additional detail notes. -->

Co-authored-by: OCram85 <marco.blessing@googlemail.com>
Reviewed-on: OCram85/PSCredentialStore#67
This commit is contained in:
OCram85 2022-07-19 14:29:25 +02:00
parent b76668c1e7
commit 1e7dd78c2b
6 changed files with 407 additions and 336 deletions

View File

@ -1,195 +1,209 @@
--- ---
external help file: ModuleRoot-help.xml external help file: ModuleRoot-help.xml
Module Name: PSCredentialStore Module Name: PSCredentialStore
online version: online version:
schema: 2.0.0 schema: 2.0.0
--- ---
# Connect-To # Connect-To
## SYNOPSIS ## SYNOPSIS
Connects to the given host using the stored CredentialStoreItem. Connects to the given host using the stored CredentialStoreItem.
## SYNTAX ## SYNTAX
### Private (Default) ### Private (Default)
``` ```
Connect-To -RemoteHost <String> [-Identifier <String>] -Type <String> [-Credentials <PSCredential>] [-PassThru] Connect-To -RemoteHost <String> [-Identifier <String>] -Type <String> [-Credentials <PSCredential>] [-PassThru]
[<CommonParameters>] [<CommonParameters>]
``` ```
### Shared ### Shared
``` ```
Connect-To -RemoteHost <String> [-Identifier <String>] -Type <String> [-Credentials <PSCredential>] [-Shared] Connect-To -RemoteHost <String> [-Identifier <String>] -Type <String> [-Credentials <PSCredential>] [-Shared]
[-Path <String>] [-PassThru] [<CommonParameters>] [-Path <String>] [-PassThru] [<CommonParameters>]
``` ```
## DESCRIPTION ## DESCRIPTION
Establish a connection to the selected host using a stored CredentialStoreItem. Establish a connection to the selected host using a stored CredentialStoreItem.
## EXAMPLES ## EXAMPLES
### EXAMPLE 1 ### EXAMPLE 1
``` ```
Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs
``` ```
### EXAMPLE 2 ### EXAMPLE 2
``` ```
Connect-To -RemoteHost "ftp.myside.local" -Type FTP Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral'
``` ```
### EXAMPLE 3 ### EXAMPLE 3
``` ```
Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS Connect-To -RemoteHost "ftp.myside.local" -Type FTP
``` ```
### EXAMPLE 4 ### EXAMPLE 4
``` ```
Connect-To -RemoteHost "esx01.myside.local" -Type VMware Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS
``` ```
### EXAMPLE 5 ### EXAMPLE 5
``` ```
Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer Connect-To -RemoteHost "esx01.myside.local" -Type VMware
``` ```
### EXAMPLE 6 ### EXAMPLE 6
``` ```
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer
``` ```
### EXAMPLE 7 ### EXAMPLE 7
``` ```
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
``` ```
## PARAMETERS ### EXAMPLE 8
```
### -Credentials Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
Use this parameter to bypass the stored credentials. ```
Without this parameter Connect-To tries to read the
needed credentials from the CredentialStore. ## PARAMETERS
If you provide this parameter you skip this lookup behavior.
So you can use it to enable credentials without preparing any user interaction. ### -Credentials
Use this parameter to bypass the stored credentials.
```yaml Without this parameter Connect-To tries to read the
Type: PSCredential needed credentials from the CredentialStore.
Parameter Sets: (All) If you provide this parameter you skip this lookup behavior.
Aliases: So you can use it to enable credentials without preparing any user interaction.
Required: False ```yaml
Position: Named Type: PSCredential
Default value: None Parameter Sets: (All)
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: False
Position: Named
### -Identifier Default value: None
Defaults to "". Accept pipeline input: False
Specify a string, which separates two CredentialStoreItems for the Accept wildcard characters: False
same hostname. ```
```yaml ### -Identifier
Type: String Defaults to "".
Parameter Sets: (All) Specify a string, which separates two CredentialStoreItems for the
Aliases: same hostname.
Required: False ```yaml
Position: Named Type: String
Default value: None Parameter Sets: (All)
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: False
Position: Named
### -PassThru Default value: None
Returns the value from the underlying connection type function. Accept pipeline input: False
Accept wildcard characters: False
```yaml ```
Type: SwitchParameter
Parameter Sets: (All) ### -PassThru
Aliases: Returns the value from the underlying connection type function.
Required: False ```yaml
Position: Named Type: SwitchParameter
Default value: False Parameter Sets: (All)
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: False
Position: Named
### -Path Default value: False
Define a custom path to a shared CredentialStore. Accept pipeline input: False
Accept wildcard characters: False
```yaml ```
Type: String
Parameter Sets: Shared ### -Path
Aliases: Define a custom path to a shared CredentialStore.
Required: False ```yaml
Position: Named Type: String
Default value: None Parameter Sets: Shared
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: False
Position: Named
### -RemoteHost Default value: None
Specify the host, for which you would like to change the credentials. Accept pipeline input: False
Accept wildcard characters: False
```yaml ```
Type: String
Parameter Sets: (All) ### -RemoteHost
Aliases: Specify the host, for which you would like to change the credentials.
Required: True ```yaml
Position: Named Type: String
Default value: None Parameter Sets: (All)
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: True
Position: Named
### -Shared Default value: None
Switch to shared mode with this param. Accept pipeline input: False
This enforces the command to work with a shared CredentialStore which Accept wildcard characters: False
can be decrypted across systems. ```
```yaml ### -Shared
Type: SwitchParameter Switch to shared mode with this param.
Parameter Sets: Shared This enforces the command to work with a shared CredentialStore which
Aliases: can be decrypted across systems.
Required: True ```yaml
Position: Named Type: SwitchParameter
Default value: False Parameter Sets: Shared
Accept pipeline input: False Aliases:
Accept wildcard characters: False
``` Required: True
Position: Named
### -Type Default value: False
Specify the host type of the target. Accept pipeline input: False
Currently implemented targets are: Possible connection values are: Accept wildcard characters: False
CiscoUcs, FTP, NetAppFAS, VMware, CisServer, ExchangeHTTP, ExchangeHTTPS, SCP. ```
```yaml ### -Type
Type: String Specify the host type of the target.
Parameter Sets: (All) Currently implemented targets are: Possible connection values are:
Aliases:
- CiscoUcs
Required: True - CiscoUcsCentral
Position: Named - CisServer
Default value: None - ExchangeHTTP
Accept pipeline input: False - ExchangeHTTPS
Accept wildcard characters: False - FTP
``` - NetAppFAS
- SCP
### CommonParameters - VMware
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).
```yaml
## INPUTS Type: String
Parameter Sets: (All)
### [None] Aliases:
## OUTPUTS
Required: True
### [None] Position: Named
## NOTES Default value: None
Accept pipeline input: False
## RELATED LINKS 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

View File

@ -1,124 +1,133 @@
--- ---
external help file: ModuleRoot-help.xml external help file: ModuleRoot-help.xml
Module Name: PSCredentialStore Module Name: PSCredentialStore
online version: online version:
schema: 2.0.0 schema: 2.0.0
--- ---
# Disconnect-From # Disconnect-From
## SYNOPSIS ## SYNOPSIS
Terminates a session established with Connect-To using a CredentialStoreItem. Terminates a session established with Connect-To using a CredentialStoreItem.
## SYNTAX ## SYNTAX
``` ```
Disconnect-From [-RemoteHost] <String> [-Type] <String> [-Force] [<CommonParameters>] Disconnect-From [-RemoteHost] <String> [-Type] <String> [-Force] [<CommonParameters>]
``` ```
## DESCRIPTION ## DESCRIPTION
Terminates a session established with Connect-To using a CredentialStoreItem. Terminates a session established with Connect-To using a CredentialStoreItem.
## EXAMPLES ## EXAMPLES
### EXAMPLE 1 ### EXAMPLE 1
``` ```
Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs
``` ```
### EXAMPLE 2 ### EXAMPLE 2
``` ```
Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP
``` ```
### EXAMPLE 3 ### EXAMPLE 3
``` ```
Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS
``` ```
### EXAMPLE 4 ### EXAMPLE 4
``` ```
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware
``` ```
### EXAMPLE 5 ### EXAMPLE 5
``` ```
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True
``` ```
### EXAMPLE 6 ### EXAMPLE 6
``` ```
Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer
``` ```
### EXAMPLE 7 ### EXAMPLE 7
``` ```
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
``` ```
### EXAMPLE 8 ### EXAMPLE 8
``` ```
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
``` ```
## PARAMETERS ## PARAMETERS
### -Force ### -Force
Force the disconnect, even if the disconnect would fail. Force the disconnect, even if the disconnect would fail.
```yaml ```yaml
Type: SwitchParameter Type: SwitchParameter
Parameter Sets: (All) Parameter Sets: (All)
Aliases: Aliases:
Required: False Required: False
Position: Named Position: Named
Default value: False Default value: False
Accept pipeline input: False Accept pipeline input: False
Accept wildcard characters: False Accept wildcard characters: False
``` ```
### -RemoteHost ### -RemoteHost
Specify the remote endpoint, whose session you would like to terminate. Specify the remote endpoint, whose session you would like to terminate.
```yaml ```yaml
Type: String Type: String
Parameter Sets: (All) Parameter Sets: (All)
Aliases: Aliases:
Required: True Required: True
Position: 1 Position: 1
Default value: None Default value: None
Accept pipeline input: False Accept pipeline input: False
Accept wildcard characters: False Accept wildcard characters: False
``` ```
### -Type ### -Type
Specify the host type of the target. Specify the host type of the target.
Currently implemented targets are: CiscoUcs, FTP, NetAppFAS, VMware, Currently implemented targets are:
CisServer, ExchangeHTTP, ExchangeHTTPS, SCP.
- CiscoUcs
```yaml - CiscoUcsCentral
Type: String - FTP
Parameter Sets: (All) - NetAppFAS
Aliases: - VMware
- CisServer
Required: True - ExchangeHTTP
Position: 2 - ExchangeHTTPS
Default value: None - SCP
Accept pipeline input: False
Accept wildcard characters: False ```yaml
``` Type: String
Parameter Sets: (All)
### CommonParameters Aliases:
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).
Required: True
## INPUTS Position: 2
Default value: None
### [None] Accept pipeline input: False
## OUTPUTS Accept wildcard characters: False
```
### [None]
## NOTES ### 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).
## RELATED LINKS
## INPUTS
### [None]
## OUTPUTS
### [None]
## NOTES
## RELATED LINKS

View File

@ -2,7 +2,7 @@
Module Name: PSCredentialStore Module Name: PSCredentialStore
Module Guid: 6800e192-9df8-4e30-b253-eb2c799bbe84 Module Guid: 6800e192-9df8-4e30-b253-eb2c799bbe84
Download Help Link: {{ Update Download Link }} 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 Locale: en-US
--- ---

View File

@ -28,11 +28,10 @@ Use this cmdlet for basic checks with a single item.
Check the item first with this function before Check the item first with this function before
you try to interact with it. you try to interact with it.
> :bulb: Breaking Change for \`v1.1.0+\`: Breaking Change for \`v1.1.0+\`:
> Test-CredentialStoreItem will return \`$false\` even if the store doesn't exist.
> Test-CredentialStoreItem will return \`$false\` even if the store doesn't exist. We removed the terminating
> We removed the terminating error and replaced it with a warning message.
> error and replaced it with a warning message.
## EXAMPLES ## EXAMPLES

View File

@ -15,7 +15,16 @@ function Connect-To {
.PARAMETER Type .PARAMETER Type
Specify the host type of the target. Currently implemented targets are: Possible connection values are: 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 .PARAMETER Credentials
Use this parameter to bypass the stored credentials. Without this parameter Connect-To tries to read the 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 .EXAMPLE
Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs
.EXAMPLE
Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral'
.EXAMPLE .EXAMPLE
Connect-To -RemoteHost "ftp.myside.local" -Type FTP Connect-To -RemoteHost "ftp.myside.local" -Type FTP
@ -79,6 +91,7 @@ function Connect-To {
[Parameter(Mandatory = $true, ParameterSetName = 'Private')] [Parameter(Mandatory = $true, ParameterSetName = 'Private')]
[ValidateSet( [ValidateSet(
'CiscoUcs', 'CiscoUcs',
'CiscoUcsCentral',
'FTP', 'FTP',
'NetAppFAS', 'NetAppFAS',
'VMware', 'VMware',
@ -189,6 +202,20 @@ function Connect-To {
Write-Error @MessageParams 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" { "FTP" {
# First establish the FTP session # First establish the FTP session
$WinSCPConParams = @{ $WinSCPConParams = @{

View File

@ -14,8 +14,17 @@ function Disconnect-From {
same hostname. same hostname.
.PARAMETER Type .PARAMETER Type
Specify the host type of the target. Currently implemented targets are: CiscoUcs, FTP, NetAppFAS, VMware, Specify the host type of the target. Currently implemented targets are:
CisServer, ExchangeHTTP, ExchangeHTTPS, SCP.
- CiscoUcs
- CiscoUcsCentral
- FTP
- NetAppFAS
- VMware
- CisServer
- ExchangeHTTP
- ExchangeHTTPS
- SCP
.PARAMETER Force .PARAMETER Force
Force the disconnect, even if the disconnect would fail. Force the disconnect, even if the disconnect would fail.
@ -64,6 +73,7 @@ function Disconnect-From {
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
[ValidateSet( [ValidateSet(
'CiscoUcs', 'CiscoUcs',
'CiscoUcsCentral',
'FTP', 'FTP',
'NetAppFAS', 'NetAppFAS',
'VMware', 'VMware',
@ -85,10 +95,10 @@ function Disconnect-From {
"VMware" { "VMware" {
try { try {
if ($Force) { if ($Force) {
Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop -Force:$true Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true
} }
else { 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" { "CisServer" {
try { try {
if ($Force) { if ($Force) {
Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction Stop -Force:$true Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true
} }
else { 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 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*" { "ExchangeHTTP*" {
try { try {
Get-Variable -Name 'PSExchangeRemote' -Scope Global -ErrorAction Stop Get-Variable -Name 'PSExchangeRemote' -Scope 'Global' -ErrorAction 'Stop'
Remove-PSSession -Session $Global:PSExchangeRemote -ErrorAction Stop Remove-PSSession -Session $Global:PSExchangeRemote -ErrorAction 'Stop'
} }
catch { catch {
$MessageParams = @{ $MessageParams = @{
@ -206,6 +230,4 @@ function Disconnect-From {
} }
} }
} }
end {}
} }