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

목록이나 .cer 파일을 반복하기 위해 이 작업 코드를 foreach로 확장하려고 합니다. 아래는 지금까지의 시도입니다.

실패한 코드:

$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 + "\" + $_)

어쨌든 개체의 원본을 잃어버리고 네트워크 공유 대신 로컬에서 관련 파일을 찾으려고 시도합니다. 각 반복마다 이를 네트워크 공유로 명시적으로 지정해야 했습니다.

관련 정보