Это немного странно, но вы можете использовать необработанный C # в PowerShell через Add-Type
. Вот пример класса, который я использовал, чтобы иметь возможность переключать проверку сертификата в текущем сеансе PowerShell.
if (-not ([System.Management.Automation.PSTypeName]'CertValidation').Type)
{
Add-Type @"
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class CertValidation
{
static bool IgnoreValidation(object o, X509Certificate c, X509Chain ch, SslPolicyErrors e) {
return true;
}
public static void Ignore() {
ServicePointManager.ServerCertificateValidationCallback = IgnoreValidation;
}
public static void Restore() {
ServicePointManager.ServerCertificateValidationCallback = null;
}
}
"@
}
Затем вы можете использовать его до вызова вашей функции следующим образом.
[CertValidation]::Ignore()
И позже восстановить проверку сертификата по умолчанию следующим образом.
[CertValidation]::Restore()
Имейте в виду, что гораздо безопаснее просто исправить сертификат вашей службы, чтобы проверка действительно прошла успешно. Игнорирование проверки сертификата должно быть вашим последним средством, если вы не контролируете окружающую среду.