![Powershell을 처음 접하고 foreach가 계속 실패합니다. 인증서 파일 목록을 반복하려고 시도했지만 실패했습니다. 아마도 단순할 것이다](https://rvso.com/image/1557608/Powershell%EC%9D%84%20%EC%B2%98%EC%9D%8C%20%EC%A0%91%ED%95%98%EA%B3%A0%20foreach%EA%B0%80%20%EA%B3%84%EC%86%8D%20%EC%8B%A4%ED%8C%A8%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EC%9D%B8%EC%A6%9D%EC%84%9C%20%ED%8C%8C%EC%9D%BC%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%98%EB%A0%A4%EA%B3%A0%20%EC%8B%9C%EB%8F%84%ED%96%88%EC%A7%80%EB%A7%8C%20%EC%8B%A4%ED%8C%A8%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%95%84%EB%A7%88%EB%8F%84%20%EB%8B%A8%EC%88%9C%ED%95%A0%20%EA%B2%83%EC%9D%B4%EB%8B%A4.png)
문제:
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 + "\" + $_)
어쨌든 개체의 원본을 잃어버리고 네트워크 공유 대신 로컬에서 관련 파일을 찾으려고 시도합니다. 각 반복마다 이를 네트워크 공유로 명시적으로 지정해야 했습니다.