web-dev-qa-db-ja.com

Powershell CoreにPKIモジュールをインストールすることは可能ですか?

Powershell 5のPKIモジュールのさまざまなコマンドを使用したい:

$ Get-Command -module PKI

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Add-CertificateEnrollmentPolicyServer              1.0.0.0    PKI
Cmdlet          Export-Certificate                                 1.0.0.0    PKI
Cmdlet          Export-PfxCertificate                              1.0.0.0    PKI
Cmdlet          Get-Certificate                                    1.0.0.0    PKI
Cmdlet          Get-CertificateAutoEnrollmentPolicy                1.0.0.0    PKI
Cmdlet          Get-CertificateEnrollmentPolicyServer              1.0.0.0    PKI
Cmdlet          Get-CertificateNotificationTask                    1.0.0.0    PKI
Cmdlet          Get-PfxData                                        1.0.0.0    PKI
Cmdlet          Import-Certificate                                 1.0.0.0    PKI
Cmdlet          Import-PfxCertificate                              1.0.0.0    PKI
Cmdlet          New-CertificateNotificationTask                    1.0.0.0    PKI
Cmdlet          New-SelfSignedCertificate                          1.0.0.0    PKI
Cmdlet          Remove-CertificateEnrollmentPolicyServer           1.0.0.0    PKI
Cmdlet          Remove-CertificateNotificationTask                 1.0.0.0    PKI
Cmdlet          Set-CertificateAutoEnrollmentPolicy                1.0.0.0    PKI
Cmdlet          Switch-Certificate                                 1.0.0.0    PKI
Cmdlet          Test-Certificate                                   1.0.0.0    PKI

ただし、実行中Install-Module -Name PKI 戻り値

No match was found for the specified search criteria and module name 'PKI'

PSPKIがありますが、PSPKIは異なるAPIとコマンドを持つサードパーティのモジュールです。

Get-Command -Module PSPKI

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Add-AIA                                            3.3.0.0    PSPKI
Alias           Add-CAACL                                          3.3.0.0    PSPKI
Alias           Add-CDP                                            3.3.0.0    PSPKI
Alias           Connect-CA                                         3.3.0.0    PSPKI
Alias           Disable-CRLFlag                                    3.3.0.0    PSPKI
Alias           Disable-KRAFlag                                    3.3.0.0    PSPKI
Alias           Enable-CRLFlag                                     3.3.0.0    PSPKI
Alias           Enable-KRAFlag                                     3.3.0.0    PSPKI
Alias           Get-AIA                                            3.3.0.0    PSPKI
Alias           Get-CA                                             3.3.0.0    PSPKI
Alias           Get-CAACL                                          3.3.0.0    PSPKI
Alias           Get-CDP                                            3.3.0.0    PSPKI
Alias           Get-CRL                                            3.3.0.0    PSPKI
Alias           Get-CRLFlag                                        3.3.0.0    PSPKI
Alias           Get-CTL                                            3.3.0.0    PSPKI
Alias           Get-KRAFlag                                        3.3.0.0    PSPKI
Alias           Remove-AIA                                         3.3.0.0    PSPKI
Alias           Remove-CAACL                                       3.3.0.0    PSPKI
Alias           Remove-CDP                                         3.3.0.0    PSPKI
Alias           Remove-Request                                     3.3.0.0    PSPKI
Alias           Restore-CRLFlagDefault                             3.3.0.0    PSPKI
Alias           Restore-KRAFlagDefault                             3.3.0.0    PSPKI
Alias           Set-CAACL                                          3.3.0.0    PSPKI
Alias           Set-CDP                                            3.3.0.0    PSPKI
Alias           Show-CRL                                           3.3.0.0    PSPKI
Alias           Show-CTL                                           3.3.0.0    PSPKI
Function        Convert-PemToPfx                                   3.3.0.0    PSPKI
Function        Convert-PfxToPem                                   3.3.0.0    PSPKI
Function        Get-CertificateContextProperty                     3.3.0.0    PSPKI
Function        Get-CertificateRequest                             3.3.0.0    PSPKI
Function        Get-CertificateRevocationList                      3.3.0.0    PSPKI
Function        Get-CertificateTrustList                           3.3.0.0    PSPKI
Function        Get-CryptographicServiceProvider                   3.3.0.0    PSPKI
Function        Get-EnrollmentPolicyServerClient                   3.3.0.0    PSPKI
Function        Get-ErrorMessage                                   3.3.0.0    PSPKI
Function        Get-ObjectIdentifier                               3.3.0.0    PSPKI
Function        Get-ObjectIdentifierEx                             3.3.0.0    PSPKI
Function        New-SelfSignedCertificateEx                        3.3.0.0    PSPKI
Function        Ping-ICertInterface                                3.3.0.0    PSPKI
Function        Receive-Certificate                                3.3.0.0    PSPKI
Function        Register-ObjectIdentifier                          3.3.0.0    PSPKI
Function        Show-Certificate                                   3.3.0.0    PSPKI
Function        Show-CertificateRevocationList                     3.3.0.0    PSPKI
Function        Show-CertificateTrustList                          3.3.0.0    PSPKI
Function        Start-PsFCIV                                       3.3.0.0    PSPKI
Function        Submit-CertificateRequest                          3.3.0.0    PSPKI
Function        Test-WebServerSSL                                  3.3.0.0    PSPKI
Function        Unregister-ObjectIdentifier                        3.3.0.0    PSPKI

Powershell Core 6にPKIモジュールをインストールするにはどうすればよいですか?

9
mikemaccana

PKIモジュールは、次を使用してインポートできます。

Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PKI\pki.psd1

powerShell v6.0.4

または

Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PKI\pki.psd1 -SkipEditionCheck

powerShell v6.1リリース候補1

しかし、私がテストした2つのコマンドレットはどちらも実行に失敗しました

PS>  Get-Certificate
Get-Certificate : The type initializer for '<Module>' threw an exception.
At line:1 char:1
+ Get-Certificate
+ ~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException

PS>  Test-Certificate -Cert  Cert:\LocalMachine\My\494D1D7AFE42DD86D3968814CD4530AF29288BE1 -AllowUntrustedRoot
Test-Certificate : The type initializer for '<Module>' threw an exception.
At line:1 char:1
+ Test-Certificate -Cert  Cert:\LocalMachine\My\494D1D7AFE42DD86D396881 ...
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException

つまり、現時点では、PowerShell v6.xで直接コマンドレットを使用することはできません。

あなたができることは、ローカルマシンへのPowerShellリモート処理セッション(WinRM)を作成し、そのセッションにPKIモジュールをインポートすることです。これにより、PowerShell v6から使用できるコマンドレットのプロキシ関数が提供されます。別のPowerShell v6セッションでPKIモジュールを使用する場合は、インポートを繰り返す必要があります

6