1

Я пытаюсь выбрать сертификат из хранилища сертификатов компьютера LocalMachine\My, который служит для Exchange Server или Authentication (я не знаю точную номенклатуру). Я знаю, что есть фильтры для возврата только сертификатов определенного типа, как таковые:Как найти сертификаты типа Server Exchange или Server Authentication, установленные на главном компьютере с использованием PowerShell?

PS> Get-ChildItem Cert:\LocalMachine\My -codesigning 

и что я хочу сделать что-то вроде:

PS> Get-ChildItem Cert:\LocalMachine\My -exchange 

Какого неудовлетворения PowerShell.

Если такого ключевого слова фильтра не существует, можете ли вы предпринять способ сделать это или, по крайней мере, как это сделать?

Заранее благодарен!

ответ

1

Чтобы получить список сертификатов с аутентификацией сервера вы можете фильтровать с использованием расширенных свойств использования ключа:

dir cert:\localmachine\my | ? { 
    $_.Extensions | % { 
     $_.EnhancedKeyUsages | ? { 
      $_.FriendlyName -eq "Server Authentication"}}} 
+0

Свойство FriendlyName не обязательно связано с аутентификацией сервера. – rae1

+0

@ rae1n Не уверен, что вы имеете в виду. В этом коде будут перечислены все сертификаты, имеющие расширение [Server Authentication extension] (http://www.alvestrand.no/objectid/1.3.6.1.5.5.7.3.1.html). –

+0

@ rae1n Я думаю, вы вводите в заблуждение свойство FriendlyName в этом коде с другим дружественным именем в сертификате. –

0

Вы можете прочитать свойства каждого сертификата таким образом:

Get-ChildItem Cert:\LocalMachine\My | fl * 

, то вы можете фильтровать по свойству, в этом случае фильтрации по имени эмитента:

Get-ChildItem Cert:\LocalMachine\My | where-object { $_.issuer -match "servername" } 
+0

Нет, эмитент не является специальным определить, был ли сертификат создан для целей аутентификации сервера или нет, он просто отображает то же самое из центра сертификации, который выдал сертификат. Я просматриваю свойства сертификата и не могу найти тот, который связан с его назначением. – rae1