Compare commits

..

4 Commits

27 changed files with 374 additions and 399 deletions

View File

@ -1,32 +0,0 @@
# The full repository name
repo: OCram85/PSCredentialStore
# Service type (gitea or github)
service: gitea
# Base URL for Gitea instance if using gitea service type (optional)
# Default: https://gitea.com
base-url: https://gitea.ocram85.com
# Changelog groups and which labeled PRs to add to each group
groups:
- name: ✨ FEATURES
labels:
- feature
- name: 📦 META
labels:
- meta
- name: 🐛 BUGFIXES
labels:
- bug
- name: 🛠️ ENHANCEMENTS
labels:
- enhancement
- name: 📚 DOCS
labels:
- docs
- name: 🔖 MISC
default: true
# regex indicating which labels to skip for the changelog
skip-labels: skip-changelog|backport\/.+

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

@ -1,25 +1,9 @@
# Changelog
<!-- insertMark -->
## [v1.1.1](https://gitea.ocram85.com/OCram85/PSCredentialStore/releases/tag/v1.1.1) - 2022-10-10
* 📦 META
* Adds changelog config for gitea changelog cli tool (#77)
* 🐛 BUGFIXES
* Fix Set-CredentialStoreItem (#76)
* Fix optional module dependencies (#75)
### Contributors
* [@OCram85](https://gitea.ocram85.com/OCram85)
* [@pinguinfuss](https://gitea.ocram85.com/pinguinfuss)
## `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)
@ -36,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,14 +18,13 @@ 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
@ -49,86 +48,79 @@ function Connect-To {
[None]
.EXAMPLE
Connect-To -RemoteHost 'vc.domain.local' -Type CisServer
Connect-To -RemoteHost "ucs.myside.local" -Type CiscoUcs
.EXAMPLE
Connect-To -RemoteHost 'ucs.domain.local' -Type CiscoUcs
Connect-To -RemoteHost "ucscentral.myside.local" -Type 'CiscoUcsCentral'
.EXAMPLE
Connect-To -RemoteHost 'ucs-central.domain.local' -Type 'CiscoUcsCentral'
Connect-To -RemoteHost "ftp.myside.local" -Type FTP
.EXAMPLE
Connect-To -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTP
Connect-To -RemoteHost "fas.myside.local" -Type NetAppFAS
.EXAMPLE
Connect-To -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTPS
Connect-To -RemoteHost "esx01.myside.local" -Type VMware
.EXAMPLE
Connect-To -RemoteHost 'ftp.domain.local' -Type FTP
Connect-To -RemoteHost "vCenter.myside.local" -Type CisServer
.EXAMPLE
Connect-To -RemoteHost 'fas.domain.local' -Type NetAppFAS
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
.EXAMPLE
Connect-To -RemoteHost 'grid.domain.local' -Type NetAppStorageGRID
.EXAMPLE
Connect-To -RemoteHost 'esx01.domain.local' -Type VMware
Connect-To -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
#>
[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',
'ExchangeHTTP',
'ExchangeHTTPS',
'FTP',
'NetAppFAS',
'NetAppStorageGRID',
'SCP',
'VMware',
'VMwareCisServer'
'CisServer',
'ExchangeHTTP',
'ExchangeHTTPS',
'SCP'
)]
[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
}
@ -139,7 +131,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
@ -147,11 +139,6 @@ 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 {
@ -162,8 +149,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 {
@ -174,8 +161,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'
}
@ -186,70 +173,44 @@ 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 -NotDefault
$handle = Connect-Ucs -Name $RemoteHost -Credential $creds -ErrorAction 'Stop' -NotDefault
$ExecutionContext.SessionState.PSVariable.Set('DefaultUcs', $handle)
}
catch {
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
'CiscoUcsCentral' {
"CiscoUcsCentral" {
try {
$handle = Connect-UcsCentral -Name $RemoteHost -Credential $creds -NotDefault
$ExecutionContext.SessionState.PSVariable.Set('DefaultUcsCentral', $handle)
}
catch {
Write-Error -Message ('Unable to connect to {0} using {1}' -f $RemoteHost, $Type)
$MessageParams = @{
Message = ('Unable to connect to {0} using {1}' -f $RemoteHost, $Type)
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
'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' {
"FTP" {
# First establish the FTP session
$WinSCPConParams = @{
Credential = $creds
@ -257,81 +218,115 @@ 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 {
Write-Error -Message ('Could not connect to {0} using {1} protocol!' -f $RemoteHost, $Type)
throw "Could not connect to {0} using {1} protocol!" -f $RemoteHost, $Type
}
# Check the Connection State
if (-not $WinSCPSession.Opened) {
if (!($WinSCPSession.Opened)) {
# Check the connection state and find out if the session is still open.
$m = 'Connection to {0} using Type {1} was established. ' -f $RemoteHost, $Type
$m += 'But now it seems to be lost!'
Write-Error -Message $m
$MessageParams = @{
Message = (
("Connection to {0} using Type {1} " -f $RemoteHost, $Type) +
"was established. But now it seems to be lost!"
)
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
'NetAppFAS' {
# Construct the splatting for Connect-NcController
$params = @{
Name = $RemoteHost
Credential = $creds
HTTPS = $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)
}
"NetAppFAS" {
try {
$handle = Connect-NcController @params
$null = Connect-NcController -Name $RemoteHost -Credential $creds -ErrorAction Stop -HTTPS
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
if ($PSBoundParameters.ContainsKey('PassThru')) {
return $handle
Write-Error @MessageParams
}
}
'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)
}
"VMware" {
try {
$SgwSession = Connect-SgwServer @params
Connect-VIServer -Server $RemoteHost -Credential $creds -ErrorAction Stop | Out-Null
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
$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
}
if ($PSBoundParameters.ContainsKey('PassThru')) {
return $SgwSession
}
}
'SCP' {
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'
Credential = $creds
ErrorAction = 'Stop'
}
$Global:PSExchangeRemote = New-PSSession @ConnectionParams
# ScriptAnalyzer issue (unused var) workaround.
$null = $Global:PSExchangeRemote
}
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
}
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
}
}
"SCP" {
$WinSCPSessionParams = @{
Credential = $creds
Hostname = $RemoteHost
@ -340,49 +335,39 @@ 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.
Write-Error -Message ('Unable to connect to {0} using Type {1}.' -f $RemoteHost, $Type)
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
# Check the Connection State
if (!($WinSCPSession.Opened)) {
# Check the connection state and find out if the session is still open.
$m = 'Connection to {0} using Type {1} was established. ' -f $RemoteHost, $Type
$m += 'But now it seems to be lost!'
Write-Error -Message $m
$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
}
}
'VMware' {
try {
Connect-VIServer -Server $RemoteHost -Credential $creds -ErrorAction Stop | Out-Null
}
catch {
default {
# Write a error message to the log.
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)
$MessageParams = @{
Message = "Unable to connect to {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
}

View File

@ -1,26 +1,30 @@
function Disconnect-From {
<#
.SYNOPSIS
Terminates a session established with Connect-To.
Terminates a session established with Connect-To using a CredentialStoreItem.
.DESCRIPTION
Terminates a session established with Connect-To.
Terminates a session established with Connect-To using a CredentialStoreItem.
.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
- ExchangeHTTP
- ExchangeHTTPS
- FTP
- NetAppFAS
- NetAppStorageGRID
- SCP
- VMware
- VMwareCisServer
- CisServer
- ExchangeHTTP
- ExchangeHTTPS
- SCP
.PARAMETER Force
Force the disconnect, even if the disconnect would fail.
@ -32,194 +36,197 @@ function Disconnect-From {
[None]
.EXAMPLE
Disconnect-From -RemoteHost 'vc.domain.local' -Type CisServer
Disconnect-From -RemoteHost "ucs.myside.local" -Type CiscoUcs
.EXAMPLE
Disconnect-From -RemoteHost 'ucs.domain.local' -Type CiscoUcs
Disconnect-From -RemoteHost "ftp.myside.local" -Type FTP
.EXAMPLE
Disconnect-From -RemoteHost 'ucs-central.domain.local' -Type 'CiscoUcsCentral'
Disconnect-From -RemoteHost "fas.myside.local" -Type NetAppFAS
.EXAMPLE
Disconnect-From -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTP
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware
.EXAMPLE
Disconnect-From -RemoteHost 'exchange01.domain.local' -Type ExchangeHTTPS
Disconnect-From -RemoteHost "esx01.myside.local" -Type VMware -Force:$True
.EXAMPLE
Disconnect-From -RemoteHost 'ftp.domain.local' -Type FTP
Disconnect-From -RemoteHost "vcenter.myside.local" -Type CisServer
.EXAMPLE
Disconnect-From -RemoteHost 'fas.domain.local' -Type NetAppFAS
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTP
.EXAMPLE
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
Disconnect-From -RemoteHost "exchange01.myside.local" -Type ExchangeHTTPS
#>
[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',
'ExchangeHTTP',
'ExchangeHTTPS',
'FTP',
'NetAppFAS',
'NetAppStorageGRID',
'SCP',
'VMware',
'VMwareCisServer'
'CisServer',
'ExchangeHTTP',
'ExchangeHTTPS',
'SCP'
)]
[string] $Type,
[string]$Type,
[Parameter(Mandatory = $false)]
[switch] $Force
[switch]$Force
)
begin {
# Set sane defaults for Progress, ErrorAction and InformationPreference
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
$InformationPreference = 'Continue'
}
begin {}
process {
switch -Regex ($Type) {
'CiscoUcs' {
try {
$null = Disconnect-Ucs -Ucs $RemoteHost
}
catch {
# Write a error message to the log.
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-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
}
else {
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' {
try {
$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.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'NetAppSGWS' {
try {
$null = Disconnect-SgwServer -Server $RemoteHost
$null = Remove-Variable -Name CurrentSgwServer -Scope Global -ErrorAction 'SilentlyContinue'
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
}
}
'SCP' {
if ($global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $global:WinSCPSession
}
else {
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' {
"VMware" {
try {
if ($Force) {
$null = Disconnect-CisServer -Server $RemoteHost -Confirm:$false -Force:$true
Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop' -Force:$true
}
else {
$null = Disconnect-CisServer -Server $RemoteHost -Confirm:$false
Disconnect-VIServer -Server $RemoteHost -Confirm:$false -ErrorAction 'Stop'
}
}
catch {
# Write a error message to the log.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
$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'
}
}
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
}
}
# Check for an existing WinSCP Session var
"FTP" {
if ($Global:WinSCPSession.Opened) {
Remove-WinSCPSession -WinSCPSession $Global:WinSCPSession
}
else {
$MessageParams = @{
Message = 'There is no open WinSCP Session'
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
# DataONTAP doesn't have a CmdLet `Disconnect-NcController`.
# So we go ahead and clear the CurrentNcController variable.
"NetAppFAS" {
try {
$MessageParams = @{
Message = (
"Setting {0} to `$null, which will disconnect NetAppFAS" -f $Global:CurrentNcController
)
ErrorAction = 'Continue'
}
Write-Verbose @MessageParams
$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 @MessageParams
}
}
"CiscoUcs" {
try {
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
}
}
"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'
}
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
}
else {
$MessageParams = @{
Message = 'There is no open WinSCP Session'
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
default {
# Write a error message to the log.
Write-Error -Message ('Unable to disconnect from {0} using Type {1}.' -f $RemoteHost, $Type)
$MessageParams = @{
Message = "Unable to disconnect from {0} using Type {1}." -f $RemoteHost, $Type
ErrorAction = 'Stop'
}
Write-Error @MessageParams
}
}
}

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

@ -11,10 +11,10 @@
param ()
BeforeAll {
$ManifestFile = (Get-Item -Path './src/*.psd1').FullName
$ManifestFile = (Get-Item -Path "./src/*.psd1").FullName
Import-Module $ManifestFile -Force
$PrivateFunctions = (Get-ChildItem -Path './src/Private/*.ps1' | Where-Object {
$PrivateFunctions = (Get-ChildItem -Path "./src/Private/*.ps1" | Where-Object {
$_.BaseName -notmatch '.Tests'
}
).FullName
@ -23,25 +23,25 @@ BeforeAll {
}
# Backup existing credential stores
$VerbosePreference = 'Continue'
Write-Verbose -Message 'Backup private Credential Store...'
$VerbosePreference = "Continue"
Write-Verbose "Backup private Credential Store..."
$CSPath = Get-DefaultCredentialStorePath
$BackupFile = '{0}.back' -f $CSPath
$BackupFile = "{0}.back" -f $CSPath
if (Test-Path -Path $CSPath) {
Move-Item -Path $CSPath -Destination $BackupFile
}
Write-Verbose -Message 'Backup shared CredentialStore...'
Write-Verbose "Backup shared CredentialStore..."
$CSShared = Get-DefaultCredentialStorePath -Shared
$BackupSharedFile = '{0}.back' -f $CSShared
$BackupSharedFile = "{0}.back" -f $CSShared
if (Test-Path -Path $CSShared) {
Move-Item -Path $CSShared -Destination $BackupSharedFile
}
Write-Verbose -Message 'Remove old CredentialStore in Temp dir'
Write-Verbose "Remove old CredentialStore in Temp dir"
$CSTemp = Join-Path -Path (Get-TempDir) -ChildPath '/CredentialStore.json'
if (Test-Path -Path $CSTemp) {
Remove-Item -Path $CSTemp
}
$VerbosePreference = 'SilentlyContinue'
$VerbosePreference = "SilentlyContinue"
}
Describe 'New-CredentialStoreItem' {
@ -109,8 +109,8 @@ Describe 'New-CredentialStoreItem' {
AfterAll {
# Cleanup test stores and restore existing ones.
$VerbosePreference = 'Continue'
Write-Verbose -Message 'Restoring private CredentialStore'
$VerbosePreference = "Continue"
Write-Verbose "Restoring private CredentialStore"
If (Test-Path -Path $BackupFile) {
If (Test-Path -Path $CSPath) {
Remove-Item -Path $CSPath
@ -118,13 +118,13 @@ AfterAll {
}
}
Write-Verbose -Message 'Restoring shared CredentialStore'
Write-Verbose "Restoring shared CredentialStore"
If (Test-Path -Path $BackupSharedFile) {
If (Test-Path -Path $CSShared) {
Remove-Item -Path $CSShared
Move-Item -Path $BackupSharedFile -Destination $CSShared
}
}
$VerbosePreference = 'SilentlyContinue'
$VerbosePreference = "SilentlyContinue"
}

View File

@ -165,16 +165,8 @@
ModuleVersion = '5.17.8.1'
},
@{
ModuleName = 'NetApp.ONTAP'
ModuleVersion = '9.10.1.2111'
},
@{
ModuleName = 'StorageGRID-WebScale'
ModuleVersion = '7.2.1'
},
@{
ModuleName = 'StorageGRID-WebScale'
ModuleVersion = '7.2.1'
ModuleName = 'DataONTAP'
ModuleVersion = '9.7.1.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.