Перечисление массива Powershell для регистрации - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь перечислить массив сертификатов в файл журнала:

$allCerts = Get-ChildItem Cert:\LocalMachine\My\ | Select-Object name,subject,Thumbprint,Issuer,NotAfter

Затем отправка в журнал с помощью функции регистрации:

$allCerts | ForEach-Object {logger -logstr $_}

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

[2020-0326-1003:11:10] : @{name=; Subject=CN=WinRM HTTPS mycomputer; Thumbprint=12345679679484747463etygvetevtreye; Issuer=CN=WinRM HTTPS computer; NotAfter=03/26/2023 09:38:09}
[2020-0326-1003:11:11] : @{name=; Subject=CN=mycompcert2.abc.de.fg; Thumbprint=fdhshs44he4hhh4the44h4h4; Issuer=CN=Enterprise CA, OU=Cert Svcs, O=A Corporation, L=location, S=state, C=AU; NotAfter=09/20/2050 10:30:00}

Единственный способ, который я нашел до сих пор, это:

$allCerts | ForEach-Object {logger -logstr ($_ | Out-String)}

Что дает:

[2020-0326-0952:11:56] : 

name       :    
Subject    : CN=WinRM HTTPS mycomputer   
Thumbprint : 12345679679484747463etygvetevtreye   
Issuer     : CN=WinRM HTTPS computer  
NotAfter   : 03/26/2023 09:38:09




[2020-0326-0952:11:57] : 

name       :   
Subject    : CN=mycompcert2.abc.de.fg  
Thumbprint : fdhshs44he4hhh4the44h4h4  
CN=Enterprise CA, OU=Cert Svcs, O=A Corporation, L=location, S=state, C=AU  
NotAfter   : 09/20/2050 10:30:00

Есть ли более аккуратный способ, которым я могу перечислить свойства каждого члена массива в одну строку в журнале, не используя | out-string?

1 Ответ

2 голосов
/ 26 марта 2020

Ваша Logger функция требует строки . так что вам нужно построить строку 1-го. метод по умолчанию .ToString() не даст вам то, что вы хотите, хотя.

Вы можете сделать несколько ненадежный трюк и использовать ConvertTo-CSV, чтобы получить строки, которые будут в файле CSV ... и пропустить 1-ю строку, чтобы избавиться от строки заголовка. что-то вроде следующего ...

[мой список сертификатов для машины не имеет сертификатов, поэтому я использовал текущего пользователя. кроме того, у меня нет свойства Name ... только свойство FriendlyName.]

Get-ChildItem Cert:\CurrentUser\My |
    Select-Object -Property FriendlyName, Subject, Thumbprint, Issuer, NotAfter |
    ConvertTo-Csv -Delimiter ';' -NoTypeInformation |
    Select-Object -Skip 1

output ...

"APNS certificate";"CN=95F066ED-5A55-4053-84A0-D49E72C4AF6B";"42DA37600AFD9F0423FDCCF298A89C6CF1F945C8";"CN=Apple iPhone Device CA, OU=Apple iPhone, O=Apple Inc., C=US";"2016-11-03 2:18:59 PM"
"APNS certificate Direct";"CN=8E9D6C89-2BEF-4677-A9AD-84645ABFE44A";"2580F9FD8CB5E49EAC1035940D0D8EC09746A078";"CN=Apple iPhone Device CA, OU=Apple iPhone, O=Apple Inc., C=US";"2019-12-09 3:39:44 AM"

, если вы хотите удалить кавычки Это кажется довольно простым. [ ухмылка ]

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