2017-04-04 24 views
2

を使用して./makecert私は、リスナーのWinRM HTTPSを有効にするために以下のコードを使用していますが、PowerShellでコードを実行しながら、私は次のエラーを取得しています:は、自己署名証明書の作成 - PowerShellの

.\makecert : The term '.\makecert' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

私がしようとしましたcert.exeの完全修飾パスを指定しますが、それは機能しませんでした。完全修飾パスを提供した後、私は次の新しいエラーを取得開始しました:

Get-Random : Parameter cannot be processed because the parameter name 'e' is ambiguous. Possible matches include: -ErrorAction -ErrorVariable

全コード:

function Configure-WinRMHttpsListener 
{ 
param(
[Parameter(Mandatory = $true)] 
[string] $HostName, 
[Parameter(Mandatory = $true)] 
[string] $port) 

# Delete the WinRM Https listener if it is already configured 
Delete-WinRMListener 

# Create a test certificate 
$thumbprint = (Get-ChildItem cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=" + $hostname } | Select-Object -Last 1).Thumbprint 
if(-not $thumbprint) 
{ 

    #$serial = Get-Random 
    #"C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -r -pe -n CN=$hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -# $serial 

    #$thumbprint=(Get-ChildItem cert:\Localmachine\my | Where-Object { $_.Subject -eq "CN=" + $hostname } | Select-Object -Last 1).Thumbprint 
    #C:\Program Files (x86)\Windows Kits\10\bin\x86\makecert -r -pe -n CN=$hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 


    $serial = Get-Random .\makecert -r -pe -n CN=$hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -# $serial 

    $thumbprint=(Get-ChildItem cert:\Localmachine\my | Where-Object { $_.Subject -eq "CN=" + $hostname } | Select-Object -Last 1).Thumbprint 


    if(-not $thumbprint) 
    { 
     throw "Failed to create the test certificate." 
    } 
}  

$response = cmd.exe /c .\winrmconf.cmd $hostname $thumbprint 
} 
+0

'$ serial = Get-Random。\ makecert -r -pe -n CN = $ hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 - #$ serial'これはどのように動作すると思いますか? – 4c74356b41

+0

これにネイティブなpowershellコマンドレットを使用してみませんか? New-SelfSignedCertificate? – bluuf

答えて

1
$serial = Get-Random .\makecert -r -pe -n CN=$hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -# $serial 

は実際にうっかり持っているように見える2つのコードの別々のラインです1にマージされる($serial = get-randomが第1行である)。それらは、セミコロン(get-randomの後)で区切られるか、またはフラッシュとして2つの別々の行に置かれる必要があります。あなたはまた、おそらくMakecert.exeへのフルパスを使用する必要があります(あるいは、それがであるディレクトリからスクリプトを実行していることが、まだ.\makecert.exeとしてそれを参照する):

は、これに上記のコードを修正してください

$serial = Get-Random 
& "C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -r -pe -n CN=$hostname -b 01/01/2012 -e 01/01/2022 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -# $serial 
+0

最後の行を使用するには、パスを引用符で囲み、呼び出し演算子を使用する必要があります。 –

関連する問題