Function Get-SmartCardCred{ <# .SYNOPSIS Get certificate credentials from the user's certificate store. .DESCRIPTION Returns a PSCredential object of the user's selected certificate. .EXAMPLE Get-SmartCardCred UserName Password -------- -------- @@BVkEYkWiqJgd2d9xz3-5BiHs1cAN System.Security.SecureString .EXAMPLE $Cred = Get-SmartCardCred .OUTPUTS [System.Management.Automation.PSCredential] .NOTES Author: Joshua Chase Last Modified: 01 August 2018 C# code used from https://github.com/bongiovimatthew-microsoft/pscredentialWithCert #> [cmdletbinding()] param() $SmartCardCode = @" // Kod C# do obsługi karty inteligentnej i pobierania certyfikatu "@ # Dodanie kodu C# do bieżącej sesji PowerShell Add-Type -TypeDefinition $SmartCardCode -Language CSharp Add-Type -AssemblyName System.Security # Pobranie listy certyfikatów z magazynu certyfikatów użytkownika $ValidCerts = [System.Security.Cryptography.X509Certificates.X509Certificate2[]](Get-ChildItem 'Cert:\CurrentUser\My') # Wybór certyfikatu z wyświetlonym oknem dialogowym $Cert = [System.Security.Cryptography.X509Certificates.X509Certificate2UI]::SelectFromCollection($ValidCerts, 'Choose a certificate', 'Choose a certificate', 0) # Pobranie PINu od użytkownika $Pin = Read-Host "Enter your PIN: " -AsSecureString # Wywołanie metody MarshalFlow z klasy Certificate w celu uzyskania poświadczenia Write-Output ([SmartCardLogon.Certificate]::MarshalFlow($Cert.Thumbprint, $Pin)) } Komentarze wyjaśniające działanie: .SYNOPSIS: Krótkie streszczenie funkcji, które opisuje jej przeznaczenie. .DESCRIPTION: Szczegółowy opis funkcji, który informuje użytkownika, że funkcja zwraca obiekt PSCredential wybranego przez użytkownika certyfikatu. .EXAMPLE: Przykładowe użycie funkcji, które pokazuje wynikowy obiekt PSCredential z wybranym certyfikatem. .OUTPUTS: Informacja o typie zwracanym przez funkcję. .NOTES: Dodatkowe informacje o autorze i dacie ostatniej modyfikacji funkcji oraz źródło kodu C#, z którego korzysta funkcja. Parametry i kod C#: Definicja parametrów funkcji oraz kod C# do obsługi karty inteligentnej, który jest dodawany do bieżącej sesji PowerShell. Pobranie certyfikatu i PINu: Funkcja pobiera listę certyfikatów z magazynu użytkownika, pozwala użytkownikowi na wybór certyfikatu, a następnie prosi o wprowadzenie PINu. Wywołanie metody MarshalFlow: Wywołuje metodę MarshalFlow z klasy Certificate (zdefiniowanej w kodzie C#), aby uzyskać poświadczenie certyfikatu na podstawie wybranego certyfikatu i PINu.