Новичок в powershell и мой foreach постоянно падает. Пытаюсь перебрать список файлов сертификатов, но он терпит неудачу. Вероятно, просто

Новичок в powershell и мой foreach постоянно падает. Пытаюсь перебрать список файлов сертификатов, но он терпит неудачу. Вероятно, просто

Проблема:

Когда я импортирую сертификат индивидуально, вне foreach, он печатает отпечаток по мере необходимости; однако мне нужно пройтись по списку файлов .cer на файловом ресурсе, чтобы я мог запустить их против текущих установленных сертификатов локальной машины. В тот момент, когда я пытаюсь запустить список сертификатов через foreach, он терпит неудачу.

Рабочий код (индивидуально)

<# Notice the explicite .cer file #>
$certGet = Get-ChildItem -Path \\fileserver\...\Certs\cert.cer

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($certGet)
$cert.Thumbprint

Я пытаюсь масштабировать этот рабочий код в foreach для итерации по списку или файлам .cer. Ниже представлена ​​моя попытка на данный момент.

Неверный код:

$certGetList = Get-ChildItem -Path \\fileserver\...\Certs

$certGetList | ForEach-Object {
    $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $cert.Import($_)
    $cert.Thumbprint
}

Сообщение об ошибке

ERROR: Exception calling "Import" with "1" argument(s): "The system cannot find the file specified.
ERROR: "
list_thumbprints_test.ps1 (18, 2): ERROR: At Line: 18 char: 2
ERROR: +     $cert.Import($_)
ERROR: +     ~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
ERROR:     + FullyQualifiedErrorId : CryptographicException
ERROR:

решение1

Конечно... так просто.

Отвечать:

$cert.Import($certGetList + "\" + $_)

Каким-то образом он теряет источник объекта и пытается найти соответствующий файл локально, а не на сетевом ресурсе. Мне нужно было явно направить его на сетевой ресурс для каждой итерации.

Связанный контент