运行 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 个问题 -
如果要从基于当前目录的相对路径调用工具,Powershell 需要 .\
资格。即 makecert\makecert.exe
不起作用,您需要 .\makecert\makecert.exe
.
如果您使用&
,后续字符串应仅包含路径和工具名称,不任何参数。即 & "sometool.exe -a foo -b bar"
是错误的,& "sometool.exe" -a foo -b bar
是正确的。
另请注意,除非路径 and/or 工具名称包含空格或其他特殊字符,或者路径因其他原因已存储在字符串中,否则不需要 &
。鉴于您的示例代码,这里并不严格需要它。
所以我会推荐:
$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
以下是在命令提示符下运行创建所需证书文件的两个命令:
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 个问题 -
如果要从基于当前目录的相对路径调用工具,Powershell 需要
.\
资格。即makecert\makecert.exe
不起作用,您需要.\makecert\makecert.exe
.如果您使用
&
,后续字符串应仅包含路径和工具名称,不任何参数。即& "sometool.exe -a foo -b bar"
是错误的,& "sometool.exe" -a foo -b bar
是正确的。
另请注意,除非路径 and/or 工具名称包含空格或其他特殊字符,或者路径因其他原因已存储在字符串中,否则不需要 &
。鉴于您的示例代码,这里并不严格需要它。
所以我会推荐:
$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