function Test-CSCertificate { <# .SYNOPSIS Tests if the linked certificate is store ein the specified cert stores. .DESCRIPTION Test-CSCertificate should be an easy high level test for the linked certificate. .PARAMETER Type Select between 'Private' or 'Shared'. .INPUTS [None] .OUTPUTS [bool] .EXAMPLE Test-CSCertificate -Type 'Shared' #> [CmdletBinding()] [OutputType([bool])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateSet('Private', 'Shared')] [string]$Type ) begin { if ($Type -eq 'Private') { $CS = Get-CredentialStore } elseif ($Type -eq 'Shared') { $CS = Get-CredentialStore -Shared } if ($null -ne $CS.PfxCertificate) { Write-Warning -Message ( 'There is a Pfx certificate file linked in the store. ' + 'Certificates saved in the Cert store will be ignored!' ) } } process { if ($Type -eq 'Private') { $cert = Get-CSPfXCertificate -Thumbprint $CS.Thumbprint -StoreName 'My' -StoreLocation 'CurrentUser' } elseif ($Type -eq 'Shared') { if ( $isLinux) { $cert = Get-CSPfxCertificate -Thumbprint $CS.Thumbprint -StoreName 'My' -StoreLocation 'CurrentUser' if ($null -eq $cert) { $PFXParams = @{ Thumbprint = $CS.Thumbprint StoreName = 'Root' StoreLocation = 'LocalMachine' } $cert = Get-CSPfxCertificate @PFXParams } } elseif ( (! $isLinux) -or ($isWindows) ) { $PFXParams = @{ Thumbprint = $CS.Thumbprint StoreName = 'My' StoreLocation = 'LocalMachine' } $cert = Get-CSPfxCertificate @PFXParams if ($null -eq $cert) { $PFXParams = @{ Thumbprint = $CS.Thumbprint StoreName = 'Root' StoreLocation = 'LocalMachine' } $cert = Get-CSPfxCertificate @PFXParams } } } if ($null -eq $cert) { return $false } else { return $true } } end { } }