我试图部分自动化我们的证书请求进程,我有困难让certreq远程运行。密码在下面。CSR没有生成,也没有生成错误,所以我不确定问题可能是什么。
$svr = Read-Host "Enter server name"
$cred = [cred]
$dom = (gwmi Win32_ComputerSystem -ComputerName $svr -Credential $cred).Domain
$infPath = "C:\temp\inf.inf"
Set-Content -Value "[Version]
Signature=`"`$Windows NT$`"
[NewRequest]
Subject=`"CN=$svr.$dom`"
Exportable=FALSE
KeyLength=2048
KeySpec=1
MachineKeySet=TRUE
PrivateKeyArchive=FALSE
ProviderName=`"Microsoft RSA SChannel Cryptographic Provider`"
ProviderType = 12
RequestType=PKCS10
Silent=TRUE
UseExistingKeySet=FALSE
UserProtected=FALSE
KeyUsage = 0xF0" -Path "C:\temp\inf.inf" -Force
cp -Path "C:\temp\inf.inf" -Destination "\\$svr\C$\temp\"
$reqString = "certreq -q -new -p C:\temp\inf.inf C:\temp\request.csr"
Invoke-Command -ComputerName [servername] -ScriptBlock {"certreq -q -new -p C:\temp\inf.inf C:\temp\request.csr"} -Credential $cred
cp -Path "\\$svr\C$\temp\request.csr" -Destination "C:\temp\"发布于 2016-04-25 18:10:46
根据注释,假设您在远程计算机上本地运行certreq命令时没有问题,第一个cp命令也没有问题,该命令将文件从本地路径转移到远程路径。让我相信问题完全在于Invoke-Command的格式。
假设您没有解决服务器名称的问题,并且给定的凭据至少能够在远程计算机上运行certreq,我唯一能提出的建议是删除scriptblock的双引号。
Invoke-Command -ComputerName [servername] -ScriptBlock {certreq -q -new -p C:\temp\inf.inf C:\temp\request.csr} -Credential $cred发布于 2016-04-26 04:32:18
有时在目标系统上执行Cmd命令可能会有些挑剔,因为它们并不总是有最新的PS版本。我发现的一种更可靠的方法是将参数作为变量/数组传递给Cmd命令:
Invoke-Command -ComputerName [servername] -ScriptBlock { & certreq @("-q", "-new", "-p <password>", "C:\temp\inf.inf", "C:\temp\request.csr") } -Credential $cred我还假设您刚刚从脚本中删除了密码,否则我就不明白为什么您有-p参数。
来源:http://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx
https://stackoverflow.com/questions/36802159
复制相似问题