Сценарий Powershell для сканирования на наличие истекшего SSL-сертификата для всех серверов в подразделении не работает - PullRequest
0 голосов
/ 21 ноября 2018

Я использовал учетную запись DOMAIN \ Администратор используется для учетных данных для запуска приведенного ниже сценария PowerShell для сканирования на предмет истекшего SSL-сертификата:

$ScriptBlock = {
    Get-ChildItem Cert:\*\My -Recurse |
        Select-Object Subject, 
        DnsNameList, 
        NotAfter, 
        NotBefore, 
        Thumbprint, 
        Issuer,
        @{n = "SAN"; e = {Try {($_.Extensions | Where-Object {$_.Oid.Value -eq '2.5.29.17'}).Format(0)} Catch {} }},
        @{n = "IsValid"; e = {$today = Get-Date; If ( $_.NotBefore -lt $today -and $_.NotAfter -gt $today ) { $true } Else {$false} } } }

$computers = Get-ADComputer -Filter {Enabled -eq $True -and OperatingSystem -like "*Server*"} -SearchBase "OU=Servers,OU=Production Site 1,DC=Domain,DC=com" | 
                Where-Object {Test-Connection $_.Name -Count 1 -Quiet} | 
                Select-Object -expandProperty DnsHostName | 
                Export-Csv -Path C:\Logs\SSL.csv -NoTypeInformation

$adCred = Get-Credential Invoke-Command -ComputerName $computers
-ScriptBlock $ScriptBlock -Credential $adCred

Но затем я получил ошибку:

[Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData] Подключение к удаленному серверу Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData не удалось выполнить со следующим сообщением об ошибке: WinRM не может обработать запрос.При использовании проверки подлинности Kerberos произошла следующая ошибка: Не удается найти компьютер Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData.Убедитесь, что компьютер существует в сети и что указанное имя написано правильно.Для получения дополнительной информации см. Раздел справки about_Remote_Trou Troubleshooting.+ CategoryInfo: OpenError: (Microsoft.Power ... FormatEntryData: String) [], PSRemotingTransportException + FullyQualifiedErrorId: NetworkPathNotFound, PSSessionStateBroken

Как это исправить, чтобы я мог получить результат CSV?

Обновлен код ошибки:

Invoke-Command: Невозможно проверить аргумент параметра «Имя_компьютера».Аргумент нулевой или пустой.Укажите аргумент, который не является пустым или пустым, а затем повторите команду.В строке: 19 символов: 30 + Invoke-Command -ComputerName $ computers -ScriptBlock $ ScriptBlock -Cr ... + ~~~~~~~~~~ + CategoryInfo: InvalidData: (:) [Invoke-Command], ParameterBindingValidationException+ FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft.PowerShell.Commands.InvokeCommandCommand

1 Ответ

0 голосов
/ 21 ноября 2018

Эта строка неверна для начала

$computers = Get-ADComputer -Filter {Enabled -eq $True} -SearchBase "OU=Servers,OU=Production,DC=Domain,DC=com" | 
    Select-Object -expandProperty DnsHostName | 
       Select-Object -expandProperty DnsHostName | #bad line
          Export-Csv -Path C:\Logs\SSL.csv -NoTypeInformation

Должно быть

$computers = Get-ADComputer -Filter {Enabled -eq $True} -SearchBase "OU=Servers,OU=Production,DC=Domain,DC=com" | 
    Select-Object -expandProperty DnsHostName | 
        Export-Csv -Path C:\Logs\SSL.csv -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...