簡體   English   中英

在Powershell中運行命令提示符命令

[英]Run command prompt commands in powershell

以下是兩個在命令提示符下運行並創建所需證書文件的命令:

makecert –sv <cnName>.pvk -n "cn=<cnName>" <cnName>.cer -r -eku 1.3.6.1.5.5.7.3.1
pvk2pfx -pvk <cnName>.pvk -spc <cnName>.cer -pfx <cnName>.pfx -po <password>

我正在嘗試使用以下代碼在Powershell中運行相同的命令:

$cnName = <sampleCnName> + ".com"
$pvkName = $cnName + ".pvk"
$cerName = $cnName + ".cer"
$pfxName = $cnName + ".pfx"
$certificatePassword = <password>

& "Makecert\makecert –sv $pvkName -n "cn=$cnName" $cerName -r -eku 1.3.6.1.5.5.7.3.1"
& "Makecert\pvk2pfx -pvk $pvkName -spc $cerName -pfx $pfxName -po $certificatePassword"

當前錯誤是

& : The module 'Makecert' could not be loaded. For more information, run 'Import-Module Makecert'.

一個問題是,當我在命令提示符下的Makecert文件夾中運行makecert和pvk2pfx命令時,我想在父文件夾Makecert級別中寫入powershell腳本。 想知道什么是正確的方法。

更新:以下命令在Powershell中工作:

$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 

您現在有2期-

  1. 如果要從當前目錄中的相對路徑調用工具,則Powershell需要.\\限定。 makecert\\makecert.exe無法正常工作,您需要.\\makecert\\makecert.exe

  2. 如果使用& ,則后續字符串應僅包含路徑和工具名稱, 而不包含任何參數。 & "sometool.exe -a foo -b bar"錯誤, & "sometool.exe" -a foo -b bar是正確的。

另請注意,除非路徑和/或工具名稱包含空格或其他特殊字符,或者由於其他原因路徑已存儲在字符串中,否則不需要& 給定您的示例代碼,此處並不一定需要它。

所以我建議:

$cnName = <sampleCnName> + ".com"
$pvkName = $cnName + ".pvk"
$cerName = $cnName + ".cer"
$pfxName = $cnName + ".pfx"
$certificatePassword = <password>

.\makecert\makecert.exe –sv $pvkName -n "cn=$cnName" $cerName -r -eku 1.3.6.1.5.5.7.3.1
.\makecert\pvk2pfx.exe -pvk $pvkName -spc $cerName -pfx $pfxName -po $certificatePassword

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM