Get-Content -Path在Certify(Lets Encrypt)运行的脚本中不起作用,但是当脚本在Powershell中运行时运行良好

时间:2018-06-21 00:17:16

标签: powershell certify

我的问题是我制作了一个启动Exchange Shell PSsession的脚本。 如果我在PowerShell中逐行执行脚本,或者在资源管理器中右键单击脚本并运行,则脚本运行良好。但是,当在生成新证书后通过certify调用它时,它将失败。

这是脚本的一部分:

$password = Get-Content -Path 'c:\Certificate_Update\securepassword.txt'
$pw = ConvertTo-SecureString -String $password
#$pw = ConvertTo-SecureString -AsPlainText -Force -String "admin pass here"

$cred = New-Object System.Management.Automation.PSCredential ("Wookies-Domain\Administrator", $pw)
$uri = 'http://Exchange-Server/PowerShell/'
# Starts remote Exchange shell session
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $uri -Authentication Kerberos -Credential $Cred

# Imports remote Exchange shell session to this Machine
Import-PSSession $Session

我得到的错误是:

ConvertTo-SecureString : The system cannot find the path specified.

At C:\Certificate_Update\Update_Old_Cert.ps1:40 char:7
+ $pw = ConvertTo-SecureString -String $password
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
    + FullyQualifiedErrorId :  ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

TerminatingError(New-Object): "Exception calling ".ctor" with "2" argument(s):
"Cannot process argument because the value of argument "password" is null.
Change the value of argument "password" to a non-null value.""

New-Object : Exception calling ".ctor" with "2" argument(s): "Cannot process
argument because the value of argument "password" is null. Change the value of
argument "password" to a non-null value."

是说$password为空?无法找出我做错了什么。脚本正在通过certify运行时,可能是一些权限问题吗?

1 个答案:

答案 0 :(得分:0)

我的脚本正在使用加密的标准字符串作为密码来调用文件。 这被加密为管理员。 Certify作为设置为本地系统的服务运行。因此,当脚本尝试访问密码文件时,由于权限错误而失败。 将服务设置为以管理员身份运行可以解决该问题。

感谢Ansgar Wiechers帮助我解决了问题。