Создание списка всех самозаверяющих сертификатов? - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь создать список всех самозаверяющих сертификатов в среде, использующей Powershell.

Мне нужно, чтобы этот раздел моего скрипта был направлен на несколько машин (IP-адресов), но я не знаю, как это сделать:

dir cert: -Recurse |
where {<span class="math-container">$_.subject -ne $</span>null} |
where {<span class="math-container">$_.subject -eq $</span>_.issuer} |
Export-Csv -NoTypeInformation -Encoding UTF8 -delimiter ';' -path .\ssc_export

Powershell - не моя сильная сторона,но это все, что у меня есть в этой среде.Любая идея будет принята с благодарностью!

1 Ответ

0 голосов
/ 27 сентября 2019

Предполагается, WinRM настроен , и у вас есть необходимые разрешения, это будет работать:

$computers = Get-Content -Path "R:\computers.txt"

$Results = @()

ForEach ($Computer in $Computers) {
  $Results += Invoke-Command -ComputerName $Computer -ScriptBlock { 

    $storeNames = @();
    foreach($store in Get-ChildItem -Path "cert:CurrentUser" `
      | Where-Object { $_.Name -ne 'UserDS' } ` # filter UserDS: https://stackoverflow.com/questions/57116536/powershell-fails-when-trying-to-read-certificate-store-with-the-specified-netwo/57278095#57278095
    ){
      $storeNames += "cert:CurrentUser\$($store.Name)";
    }
    foreach($store in Get-ChildItem -Path "cert:LocalMachine"){
      $storeNames += "cert:LocalMachine\$($store.Name)";
    }

    $storeNames | % { Get-ChildItem -Path $_ } `
    | where {$_.subject -ne $null} `
    | where {$_.subject -eq $_.issuer} `
    | select-object -property `
        @{ Name="Computer"; Expression={$env:COMPUTERNAME} }, `
        @{ Name="Path"; Expression={$_.PSParentPath} }, `
        @{ Name="Subject"; Expression={$_.Subject} }, `
        @{ Name="Issuer"; Expression={$_.Issuer} } `
    | Format-Table
  };       
}

$Results
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...