Compare commits

..

18 Commits

Author SHA1 Message Date
471a372bf9 Refine the implementation 2023-05-22 21:37:39 +02:00
e3349cc4dd Add external dependencies for NetAppSGWS 2023-03-09 20:35:57 +01:00
2399f227c9 Implement NetAppSGWS 2023-03-09 20:34:05 +01:00
1747bb24a8 Add a bit of spacing. Remove default as there is nothing to do. 2023-03-09 20:33:27 +01:00
c125ad0acd prettify parameters and stuff 2023-03-09 20:27:38 +01:00
2a51e76b07 Fix comment-based-help 2023-03-09 20:27:23 +01:00
13351d7e2e Isn't a valid parameter for Disconnect-From 2023-03-09 20:27:10 +01:00
3105a3230a Rework some logic 2023-03-09 20:25:26 +01:00
9ed86fd126 Reordering 2023-03-09 20:18:57 +01:00
4c9c03d7da Implement SGWS 2023-03-09 20:16:48 +01:00
22631f2836 More reordering/cleanup 2023-03-09 20:16:31 +01:00
a5b430e4ae Revert this to be in sync with max line length PSScriptAnalyzer rule 2023-03-09 13:39:08 +01:00
c272b30cb4 remove the splattings around Write-Error 2023-03-09 13:32:12 +01:00
b7ad5663dc Define some defaults for the preferences variables 2023-03-09 13:31:50 +01:00
9de752691b Fix the variable names 2023-03-09 13:11:28 +01:00
f27f1faad7 Sort the connection list 2023-03-09 13:10:54 +01:00
56727afa3e prettify the parameters 2023-03-09 13:09:15 +01:00
79a1a214c2 Replace double-quotes with single-quotes 2023-03-09 13:08:21 +01:00
25 changed files with 338 additions and 289 deletions

View File

@ -120,7 +120,7 @@ steps:
Install-Module -Name 'DroneHelper' -Repository 'PSGallery' -ErrorAction 'Stop' -AllowPrerelease -Force;
Import-Module -Name 'DroneHelper' -ErrorAction 'Stop';
Install-ModuleDependency;
New-BuildPackage -Verbose -AdditionalPath @('./src/Vendor', './src/openssl.conf')
New-BuildPackage -Verbose
}"
- name: GiteaRelease

1
.gitattributes vendored
View File

@ -21,5 +21,4 @@
# Vendor resources config
src/Vendor/libressl255/* filter=lfs diff=lfs merge=lfs -text
src/Vendor/libressl/* filter=lfs diff=lfs merge=lfs -text
*.pfx filter=lfs diff=lfs merge=lfs -text

View File

@ -3,9 +3,7 @@
<!-- insertMark -->
## `v1.1.0`
- (3d4f53d) adds pinguinfuss contributed fix (#73)
- (6fce8d6) Updates libressl files (#71)
- (ddb85d9) addChangelog (#70)
- (acb09ba) update Changelog
- (5bdb383) updates Readme (#69)
- (a95ba31) remove optional depenency helper (#68)
- (1e7dd78) adds CiscoUCSCentral connection type (#67)
@ -22,6 +20,7 @@
- (4abfec5) adds PR template (#55)
- (7708df9) Update pwsh style to latest community standards (#52)
## `v1.0.542`
- 🧙 pre migrated Gitea version

View File

@ -66,7 +66,7 @@ function New-CSCertificate {
($PSVersionTable.PSEdition -eq 'Desktop' -and $PSVersionTable.PSVersion.Major -lt 6) -or
($IsWindows -eq $true)
) {
$openssl = Join-Path -Path $ModuleBase -ChildPath '/Vendor/libressl/openssl.exe'
$openssl = Join-Path -Path $ModuleBase -ChildPath '/Vendor/libressl255/openssl.exe'
}
$Env:OPENSSL_CONF = Join-Path $ModuleBase -ChildPath '/openssl.conf'

View File

@ -10,7 +10,7 @@ function Connect-To {
Specify the host, for which you would like to change the credentials.
.PARAMETER Identifier
Defaults to "". Specify a string, which separates two CredentialStoreItems for the
Defaults to ''. Specify a string, which separates two CredentialStoreItems for the
same hostname.
.PARAMETER Type
@ -18,13 +18,14 @@ function Connect-To {
- CiscoUcs
- CiscoUcsCentral
- CisServer
- ExchangeHTTP
- ExchangeHTTPS
- FTP
- NetAppFAS
- NetAppStorageGRID
- SCP
- VMware
- VMwareCisServer
.PARAMETER Credentials
Use this parameter to bypass the stored credentials. Without this parameter Connect-To tries to read the
@ -48,79 +49,86 @@ function Connect-To {
[None]
.EXAMPLE
Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs
Connect-To -RemoteHost 'vc.domain.local' -Type CisServer
.EXAMPLE
Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral'
Connect-To -RemoteHost 'ucs.domain.local' -Type CiscoUcs
.EXAMPLE
Connect-To -RemoteHost "ftp.myside.local" -Type FTP
Connect-To -RemoteHost 'ucs-central.domain.local' -Type 'CiscoUcsCentral'
.EXAMPLE
Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS
Connect-To -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTP
.EXAMPLE
Connect-To -RemoteHost "esx01.myside.local" -Type VMware
Connect-To -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTPS
.EXAMPLE
Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer
Connect-To -RemoteHost 'ftp.domain.local' -Type FTP
.EXAMPLE
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
Connect-To -RemoteHost 'fas.domain.local' -Type NetAppFAS
.EXAMPLE
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
Connect-To -RemoteHost 'grid.domain.local' -Type NetAppStorageGRID
.EXAMPLE
Connect-To -RemoteHost 'esx01.domain.local' -Type VMware
#>
[CmdletBinding(DefaultParameterSetName = 'Private')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
'PSAvoidGlobalVars',
'',
Justification = 'Wrapping existing var from WinSCP module.'
)]
param (
[Parameter(Mandatory = $true, ParameterSetName = 'Shared')]
[Parameter(Mandatory = $true, ParameterSetName = 'Private')]
[string]$RemoteHost,
[string] $RemoteHost,
[Parameter(Mandatory = $false, ParameterSetName = 'Shared')]
[Parameter(Mandatory = $false, ParameterSetName = 'Private')]
[string]$Identifier,
[string] $Identifier,
[Parameter(Mandatory = $true, ParameterSetName = 'Shared')]
[Parameter(Mandatory = $true, ParameterSetName = 'Private')]
[ValidateSet(
'CiscoUcs',
'CiscoUcsCentral',
'FTP',
'NetAppFAS',
'VMware',
'CisServer',
'ExchangeHTTP',
'ExchangeHTTPS',
'SCP'
'FTP',
'NetAppFAS',
'NetAppStorageGRID',
'SCP',
'VMware',
'VMwareCisServer'
)]
[string]$Type,
[string] $Type,
[Parameter(Mandatory = $False, ParameterSetName = 'Shared')]
[Parameter(Mandatory = $False, ParameterSetName = 'Private')]
[PSCredential]$Credentials,
[PSCredential] $Credentials,
[Parameter(Mandatory = $true, ParameterSetNAme = 'Shared')]
[switch]$Shared,
[switch] $Shared,
[Parameter(Mandatory = $False, ParameterSetName = 'Shared')]
[ValidateNotNullOrEmpty()]
[string]$Path,
[string] $Path,
[Parameter(Mandatory = $False, ParameterSetName = 'Private')]
[Parameter(Mandatory = $False, ParameterSetName = 'Shared')]
[switch]$PassThru
[switch] $PassThru
)
begin {
# Set the CredentialStore for private, shared or custom mode.
Write-Debug ("ParameterSetName: {0}" -f $PSCmdlet.ParameterSetName)
Write-Debug ('ParameterSetName: {0}' -f $PSCmdlet.ParameterSetName)
if ($PSCmdlet.ParameterSetName -eq 'Private') {
$Path = Get-DefaultCredentialStorePath
}
@ -131,7 +139,7 @@ function Connect-To {
}
switch ($Type) {
"VMware" {
'VMware' {
# Disable the yellow certificate warning, since we haven't replaced the SSL certs for vCenter/ESXi
$null = Set-PowerCLIConfiguration -Scope Session -InvalidCertificateAction Ignore -Confirm:$false
@ -139,6 +147,11 @@ function Connect-To {
$null = Set-PowerCLIConfiguration -Scope Session -ProxyPolicy NoProxy -Confirm:$false
}
}
# Set sane defaults for Progress, ErrorAction and InformationPreference
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
$InformationPreference = 'Continue'
}
process {
@ -149,8 +162,8 @@ function Connect-To {
# Check if $Identifier has been defined, in which case we need to use different name for
# the lookup of the CredentialStoreItem.
try {
if ($Identifier -ne "") {
$RemoteHostIdentifier = "{0}/{1}" -f $Identifier, $RemoteHost
if ($Identifier -ne '') {
$RemoteHostIdentifier = '{0}/{1}' -f $Identifier, $RemoteHost
$creds = Get-CredentialStoreItem -Shared -RemoteHost $RemoteHostIdentifier -Path $Path
}
else {
@ -161,8 +174,8 @@ function Connect-To {
catch {
$MessageParams = @{
Message = (
"Unable to look up credential store item for RemoteHost " +
("{0}/Identifier {1}!" -f $RemoteHost, $Identifier)
'Unable to look up credential store item for RemoteHost ' +
('{0}/Identifier {1}!' -f $RemoteHost, $Identifier)
)
ErrorAction = 'Stop'
}
@ -173,44 +186,70 @@ function Connect-To {
$creds = $Credentials
}
if ($creds.UserName -eq "" -or $creds.Password.GetType().Name -ne 'SecureString') {
if ($creds.UserName -eq '' -or $creds.Password.GetType().Name -ne 'SecureString') {
$MessageParams = @{
Message = "Please provide valid credentials for RemoteHost {0}!" -f $RemoteHost
Message = 'Please provide valid credentials for RemoteHost {0}!' -f $RemoteHost
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
else {
switch ($Type) {
"CiscoUcs" {
'CiscoUcs' {
try {
$handle = Connect-Ucs -Name $RemoteHost -Credential $creds -ErrorAction 'Stop' -NotDefault
$handle = Connect-Ucs -Name $RemoteHost -Credential $creds -NotDefault
$ExecutionContext.SessionState.PSVariable.Set('DefaultUcs', $handle)
}
catch {
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
"CiscoUcsCentral" {
'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
Write-Error -Message ('Unable to connect to {0} using {1}' -f $RemoteHost, $Type)
}
}
"FTP" {
'ExchangeHTTP' {
try {
$ConnectionParams = @{
ConnectionURI = 'http://{0}/powershell' -f $RemoteHost
ConfigurationName = 'Microsoft.Exchange'
Credential = $creds
}
$global:PSExchangeRemote = New-PSSession @ConnectionParams
# ScriptAnalyzer issue (unused var) workaround.
$null = $global:PSExchangeRemote
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'ExchangeHTTPS' {
try {
$ConnectionParams = @{
ConnectionURI = 'https://{0}/powershell' -f $RemoteHost
ConfigurationName = 'Microsoft.Exchange'
Credential = $creds
}
$global:PSExchangeRemote = New-PSSession @ConnectionParams
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'FTP' {
# First establish the FTP session
$WinSCPConParams = @{
Credential = $creds
@ -218,115 +257,81 @@ function Connect-To {
Protocol = 'Ftp'
FtpMode = 'Passive'
}
try {
$FTPSessionOption = New-WinSCPSessionOption @WinSCPConParams
$Global:WinSCPSession = New-WinSCPSession -SessionOption $FTPSessionOption
$global:WinSCPSession = New-WinSCPSession -SessionOption $FTPSessionOption
}
catch {
throw "Could not connect to {0} using {1} protocol!" -f $RemoteHost, $Type
Write-Error -Message ('Could not connect to {0} using {1} protocol!' -f $RemoteHost, $Type)
}
# Check the Connection State
if (!($WinSCPSession.Opened)) {
if (-not $WinSCPSession.Opened) {
# Check the connection state and find out if the session is still open.
$MessageParams = @{
Message = (
("Connection to {0} using Type {1} " -f $RemoteHost, $Type) +
"was established. But now it seems to be lost!"
)
ErrorAction = 'Stop'
$m = 'Connection to {0} using Type {1} was established. ' -f $RemoteHost, $Type
$m += 'But now it seems to be lost!'
Write-Error -Message $m
}
Write-Error @MessageParams
}
}
"NetAppFAS" {
try {
$null = Connect-NcController -Name $RemoteHost -Credential $creds -ErrorAction Stop -HTTPS
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"VMware" {
try {
Connect-VIServer -Server $RemoteHost -Credential $creds -ErrorAction Stop | Out-Null
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"CisServer" {
try {
if ($PassThru.IsPresent) {
Connect-CisServer -Server $RemoteHost -Credential $creds -ErrorAction Stop
}
else {
Connect-CisServer -Server $RemoteHost -Credential $creds -ErrorAction Stop | Out-Null
}
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"ExchangeHTTP" {
try {
$ConnectionParams = @{
ConnectionURI = "http://{0}/powershell" -f $RemoteHost
ConfigurationName = 'Microsoft.Exchange'
'NetAppFAS' {
# Construct the splatting for Connect-NcController
$params = @{
Name = $RemoteHost
Credential = $creds
ErrorAction = 'Stop'
HTTPS = $true
}
$Global:PSExchangeRemote = New-PSSession @ConnectionParams
# ScriptAnalyzer issue (unused var) workaround.
$null = $Global:PSExchangeRemote
# Check if -PassThru was passed. If so, a) do not set the default variable and b) return the
# session object to the caller.
if ($PSBoundParameters.ContainsKey('PassThru')) {
$params.Add('Transient', $true)
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"ExchangeHTTPS" {
try {
$ConnectionParams = @{
ConnectionURI = "https://{0}/powershell" -f $RemoteHost
ConfigurationName = 'Microsoft.Exchange'
Credential = $creds
ErrorAction = 'Stop'
}
$Global:PSExchangeRemote = New-PSSession @ConnectionParams
$handle = Connect-NcController @params
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
Write-Error @MessageParams
if ($PSBoundParameters.ContainsKey('PassThru')) {
return $handle
}
}
"SCP" {
'NetAppStorageGRID' {
# Construct the splatting for Connect-SgwServer
$params = @{
Name = $RemoteHost
Credential = $creds
SkipCertificateCheck = $true
}
# Check if -PassThru was passed. If so, a) do not set the default variable and b) return the
# session object to the caller.
if ($PSBoundParameters.ContainsKey('PassThru')) {
$params.Add('Transient', $true)
}
try {
$SgwSession = Connect-SgwServer @params
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
if ($PSBoundParameters.ContainsKey('PassThru')) {
return $SgwSession
}
}
'SCP' {
$WinSCPSessionParams = @{
Credential = $creds
Hostname = $RemoteHost
@ -335,39 +340,49 @@ function Connect-To {
}
try {
$SessionOption = New-WinSCPSessionOption @WinSCPSessionParams
$Global:WinSCPSession = New-WinSCPSession -SessionOption $SessionOption
$global:WinSCPSession = New-WinSCPSession -SessionOption $SessionOption
Write-Verbose -Message (
"SCP Connection established with {0}" -f $Global:WinSCPSession.Hostname
'SCP Connection established with {0}' -f $global:WinSCPSession.Hostname
)
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
# Check the Connection State
if (!($WinSCPSession.Opened)) {
# Check the connection state and find out if the session is still open.
$MessageParams = @{
Message = (
("Connection to {0} using Type {1} was established. " -f $RemoteHost, $Type) +
"But now it seems to be lost!"
)
ErrorAction = 'Stop'
}
Write-Error @MessageParams
$m = 'Connection to {0} using Type {1} was established. ' -f $RemoteHost, $Type
$m += 'But now it seems to be lost!'
Write-Error -Message $m
}
}
default {
'VMware' {
try {
Connect-VIServer -Server $RemoteHost -Credential $creds -ErrorAction Stop | Out-Null
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'VMwareCisServer' {
try {
if ($PassThru.IsPresent) {
Connect-CisServer -Server $RemoteHost -Credential $creds
}
else {
$null = Connect-CisServer -Server $RemoteHost -Credential $creds
}
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
}
Write-Error @MessageParams
}
}
}

View File

@ -1,30 +1,26 @@
function Disconnect-From {
<#
.SYNOPSIS
Terminates a session established with Connect-To using a CredentialStoreItem.
Terminates a session established with Connect-To.
.DESCRIPTION
Terminates a session established with Connect-To using a CredentialStoreItem.
Terminates a session established with Connect-To.
.PARAMETER RemoteHost
Specify the remote endpoint, whose session you would like to terminate.
.PARAMETER Identifier
Defaults to "". Specify a string, which separates two CredentialStoreItems for the
same hostname.
.PARAMETER Type
Specify the host type of the target. Currently implemented targets are:
- CiscoUcs
- CiscoUcsCentral
- FTP
- NetAppFAS
- VMware
- CisServer
- ExchangeHTTP
- ExchangeHTTPS
- FTP
- NetAppFAS
- NetAppStorageGRID
- SCP
- VMware
- VMwareCisServer
.PARAMETER Force
Force the disconnect, even if the disconnect would fail.
@ -36,197 +32,194 @@ function Disconnect-From {
[None]
.EXAMPLE
Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs
Disconnect-From -RemoteHost 'vc.domain.local' -Type CisServer
.EXAMPLE
Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP
Disconnect-From -RemoteHost 'ucs.domain.local' -Type CiscoUcs
.EXAMPLE
Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS
Disconnect-From -RemoteHost 'ucs-central.domain.local' -Type 'CiscoUcsCentral'
.EXAMPLE
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware
Disconnect-From -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTP
.EXAMPLE
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True
Disconnect-From -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTPS
.EXAMPLE
Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer
Disconnect-From -RemoteHost 'ftp.domain.local' -Type FTP
.EXAMPLE
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
Disconnect-From -RemoteHost 'fas.domain.local' -Type NetAppFAS
.EXAMPLE
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
Disconnect-From -RemoteHost 'grid.domain.local' -Type NetAppStorageGRID
.EXAMPLE
Disconnect-From -RemoteHost 'esx01.domain.local' -Type VMware
.EXAMPLE
Disconnect-From -RemoteHost 'esx01.domain.local' -Type VMware -Force:$True
#>
[CmdletBinding()]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
'PSAvoidGlobalVars',
'',
Justification = 'Wrapping existing global vars from external modules'
)]
param (
[Parameter(Mandatory = $true)]
[string]$RemoteHost,
[string] $RemoteHost,
[Parameter(Mandatory = $true)]
[ValidateSet(
'CiscoUcs',
'CiscoUcsCentral',
'FTP',
'NetAppFAS',
'VMware',
'CisServer',
'ExchangeHTTP',
'ExchangeHTTPS',
'SCP'
'FTP',
'NetAppFAS',
'NetAppStorageGRID',
'SCP',
'VMware',
'VMwareCisServer'
)]
[string]$Type,
[string] $Type,
[Parameter(Mandatory = $false)]
[switch]$Force
[switch] $Force
)
begin {}
begin {
# Set sane defaults for Progress, ErrorAction and InformationPreference
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
$InformationPreference = 'Continue'
}
process {
switch -Regex ($Type) {
"VMware" {
'CiscoUcs' {
try {
if ($Force) {
Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true
}
else {
Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop'
}
$null = Disconnect-Ucs -Ucs $RemoteHost
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"CisServer" {
try {
if ($Force) {
Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true
}
else {
Disconnect-CisServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop'
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'CiscoUCSCentral' {
try {
$null = Disconnect-UcsCentral -Name $RemoteHost
$ExecutionContext.SessionState.PSVariable.Set('DefaultUcsCentral', $null)
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'ExchangeHTTP*' {
try {
Get-Variable -Name 'PSExchangeRemote' -Scope 'Global'
Remove-PSSession -Session $global:PSExchangeRemote
}
catch {
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
# Check for an existing WinSCP Session var
"FTP" {
if ($Global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $Global:WinSCPSession
'FTP' {
if ($global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $global:WinSCPSession
}
else {
$MessageParams = @{
Message = 'There is no open WinSCP Session'
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message 'There is no open WinSCP Session'
}
}
# DataONTAP doesn't have a CmdLet `Disconnect-NcController`.
# So we go ahead and clear the CurrentNcController variable.
"NetAppFAS" {
'NetAppFAS' {
try {
$MessageParams = @{
Message = (
"Setting {0} to `$null, which will disconnect NetAppFAS" -f $Global:CurrentNcController
)
ErrorAction = 'Continue'
}
Write-Verbose @MessageParams
$Global:CurrentNcController = $null
$m = 'Setting {0} to $null, which will disconnect NetAppFAS' -f $global:CurrentNcController
Write-Verbose -Message $m
$global:CurrentNcController = $null
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
Write-Error @MessageParams
}
}
"CiscoUcs" {
'NetAppSGWS' {
try {
Disconnect-Ucs -Ucs $RemoteHost
$null = Disconnect-SgwServer -Server $RemoteHost
$null = Remove-Variable -Name CurrentSgwServer -Scope Global -ErrorAction 'SilentlyContinue'
}
catch {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
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
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
"ExchangeHTTP*" {
try {
Get-Variable -Name 'PSExchangeRemote' -Scope 'Global' -ErrorAction 'Stop'
Remove-PSSession -Session $Global:PSExchangeRemote -ErrorAction 'Stop'
}
catch {
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
"SCP" {
if ($Global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $Global:WinSCPSession
'SCP' {
if ($global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $global:WinSCPSession
}
else {
$MessageParams = @{
Message = 'There is no open WinSCP Session'
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message 'There is no open WinSCP Session'
}
}
'VMware' {
# Construct the splatting for Disconnect-VIServer
$params = @{
Server = $RemoteHost
Confirm = $false
}
if ($PSBoundParameters.ContainsKey('Force')) {
$params.Add('Force', $true)
}
try {
$null = Disconnect-VIServer @params
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'VMwareCisServer' {
try {
if ($Force) {
$null = Disconnect-CisServer -Server $RemoteHost -Confirm:$false -Force:$true
}
else {
$null = Disconnect-CisServer -Server $RemoteHost -Confirm:$false
}
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
default {
# Write a error message to the log.
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
}

View File

@ -102,7 +102,7 @@ Describe "New-CredentialStoreItem" {
It "Missing CredentialStore should throw" {
{
New-CredentialStoreItem -Shared -Path '/tmp/missingStore.json' -RemoteHost 'notrelevant'
} | Should -Throw "The given credential store (/tmp/missingStore.json) does not exist!"
} | Should -Throw "Could not add anything into the given CredentialStore."
}
}
Context "Testing pipeline paramter" {

View File

@ -32,7 +32,7 @@ function New-CredentialStoreItem {
[None]
.EXAMPLE
New-CredentialStoreItem -Path 'C:\TMP\mystore.json' -RemoteHost esx01.myside.local'
New-CredentialStoreItem -Path "C:\TMP\mystore.json" -RemoteHost "esx01.myside.local"
#>
[CmdletBinding(DefaultParameterSetName = 'Private')]
@ -68,7 +68,7 @@ function New-CredentialStoreItem {
begin {
# Set the CredentialStore for private, shared or custom mode.
Write-Debug ('ParameterSetName: {0}' -f $PSCmdlet.ParameterSetName)
Write-Debug ("ParameterSetName: {0}" -f $PSCmdlet.ParameterSetName)
if ($PSCmdlet.ParameterSetName -eq 'Private') {
$Path = Get-DefaultCredentialStorePath
}
@ -84,9 +84,9 @@ function New-CredentialStoreItem {
if (-not(Test-CredentialStore -Shared -Path $Path)) {
$MessageParams = @{
Exception = [System.IO.FileNotFoundException]::new(
'The given credential store ({0}) does not exist!' -f $Path
'Could not add anything into the given CredentialStore.'
)
ErrorAction = 'Stop'
ErrorAction = "Stop"
}
Write-Error @MessageParams
}
@ -95,8 +95,8 @@ function New-CredentialStoreItem {
$CurrentDate = Get-Date -Format 'u'
if ($Identifier -ne '') {
$CredentialName = $RemoteHost = '{0}/{1}' -f $Identifier, $RemoteHost
if ($Identifier -ne "") {
$CredentialName = $RemoteHost = "{0}/{1}" -f $Identifier, $RemoteHost
}
else {
$CredentialName = $RemoteHost

View File

@ -167,6 +167,10 @@
@{
ModuleName = 'DataONTAP'
ModuleVersion = '9.7.1.1'
},
@{
ModuleName = 'StorageGRID-WebScale'
ModuleVersion = '7.2.1'
}
)

BIN
src/Vendor/libressl/openssl.exe (Stored with Git LFS) vendored

Binary file not shown.

BIN
src/Vendor/libressl255/libcrypto-41.dll (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libcrypto-41.exp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libcrypto-41.lib (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libcrypto-41.pdb (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libssl-43.dll (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libssl-43.exp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libssl-43.lib (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libssl-43.pdb (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libtls-15.dll (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libtls-15.exp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libtls-15.lib (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/libtls-15.pdb (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/ocspcheck.exe (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
src/Vendor/libressl255/openssl.exe (Stored with Git LFS) vendored Normal file

Binary file not shown.