2015-10-13 12 views
0

Следующая команда работала в PowerShell:Powershell выполнения MakeCert с переменными дает слишком много параметров ошибку

$currentDirectory = Split-Path $Script:MyInvocation.MyCommand.Path 
& "$currentDirectory\Makecert\makecert.exe" –sv actualCnName.pvk -n "cn=actualCnName" actualCnName.cer -r -eku 1.3.6.1.5.5.7.3.1 

Но я хочу, чтобы параметризовать эти и использовать имена переменных $ pvkName, $ cnName и $ cerName. Ошибка при выполнении:

$cnName = "actualCnName" 
$pvkName = $cnName + ".pvk" 
$cerName = $cnName + ".cer" 
$pfxName = $cnName + ".pfx" 

& "$currentDirectory\Makecert\makecert.exe" –sv $pvkName -n "cn=$cnName" $cerName -r -eku 1.3.6.1.5.5.7.3.1 

является

[DBG]: PS C:\WINDOWS\system32>> 
Error: Too many parameters 
Usage: MakeCert [ basic|extended options] [outputCertificateFile] 
Basic Options 
-sk <keyName>  Subject's key container name; To be created if not present 
-pe     Mark generated private key as exportable 
-ss <store>  Subject's certificate store name that stores the output 
        certificate 
-sr <location>  Subject's certificate store location. 
         <CurrentUser|LocalMachine>. Default to 'CurrentUser' 
-# <number>  Serial Number from 1 to 2^31-1. Default to be unique 
-$ <authority> The signing authority of the certificate 
         <individual|commercial> 
-n <X509name>  Certificate subject X500 name (eg: CN=Fred Dews) 
-?     Return a list of basic options 
-!     Return a list of extended options 
[DBG]: PS C:\WINDOWS\system32>> 

Хотите знать, как обойти эту ошибку.

+0

ли вы проверить мой ответ? – JPBlanc

+0

Благодарим вас за ответ. Я очень сожалею о задержке. Я задал пару связанных вопросов и занялся их тестированием. Я проверю это как можно скорее в ближайшие два дня и вернусь. – Romonov

ответ

0

Вот пример того, как я использую, чтобы позвонить родной еху с комментариями использования и параметрами:

# Gen-CACert.ps1 
clear-host 

$scriptBlock = {.\Makecert -n `"CN=PowerShell Authorite de certification`" <# Sujet du certificat (conforme à la norme X50 #>` 
          -a sha1           <# Algorithme utilisé #>` 
          -eku 1.3.6.1.5.5.7.3.3       <# Option du certificat (signature de code) #>` 
          -r            <# Certificat auto signé #>` 
          <# -ss `"$($args[0])`"        Dossier de stockage du certificat #>` 
          -ss `"root`"          <# Dossier de stockage du certificat #>` 
          -sr localMachine         <# Magasin de stockage localmachine ou currentuser (defaut) #>` 
          -sv `"$($args[0]).pvk`"       <# Nom du fichier contenant la clef privée #>` 
          `"$($args[0]).cer`"}        <# Nom du fichier certificat #> 

$PoshCARoot = "PoshCARoot" 
Invoke-Command -ScriptBlock $scriptBlock -ArgumentList $PoshCARoot