我尝试在两个Powershell脚本中使用ConvertTo-和ConvertFrom-SecureString,但我遇到了一个问题,即使用动态配置文件生成加密的密码,然后在同一台机器上使用相同的配置文件读取/解密它们。
我的脚本要求交互式用户(IU)键入任务用户(TU)的凭据。逻辑是在IU的powershell会话中为TU创建PSSession,从纯文本(或读主机)生成安全字符串,并将其转换为常规字符串以将其导出到文件。
$scriptUser = Read-Host "Entrez le nom de l'utilisateur qui va chiffrer/utiliser le fichier de mot de passe (domain\user)"
$scriptCredential = Get-Credential -Message "Veuillez entrer le mot de passe de l'utilisateur $scriptUser" -User $scriptUser
$Crypt = New-PSSession -Credential $scriptCredential -ComputerName localhost
if ($Crypt)
{
Enter-PSSession $Crypt
$Texte = "JULIEN"
ConvertTo-SecureString $Texte -AsPlainText -Force | ConvertFrom-SecureString | Set-Content -Path C:\PathToFile\testcrypt_adm_task.txt
Exit-PSSession
}但是当我尝试通过TU (交互式或任务调度程序)使用ConvertFrom-SecureString读取文件内容时:不可能!
> PS C:\PathToFile> Get-Content .\testcrypt_adm_task.txt |
> convertto-securestring convertto-securestring : Key not valid for use
> in specified state. At line:1 char:40
> + Get-Content .\testcrypt_adm_task.txt | convertto-securestring
> + ~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
> + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.Conv ertToSecureStringCommand如果我对IU执行完全相同的命令,没有问题,就好像用于加密Securestring的密钥绑定到了IU,而不是TU。
关键是我真的很难理解PSSession真正加载了什么,因为我的IU而不是TU可以读取安全字符串,即使加密操作是在具有TU证书的PSSession中完成的……
Enter-PSSession不是意味着真正进入一个会话,以及所有的环境吗?关于Enter-PSSession加载的环境,我是否遗漏了什么?
谢谢你的帮忙
发布于 2020-03-25 06:44:47
Import-clixml是将PowerShell对象保存到磁盘的唯一方法。Export-clixml允许您将文件导入到PowerShell对象中。
尝试将"| Set-Content -Path C:\PathToFile\testcrypt_adm_task.txt“更改为"| Export-Clixml -Path C:\PathToFile\testcrypt_adm_task.txt”
当您准备好阅读它时,使用$mysavedpassword = import-clixml c:\PathToFile\testcrypt_adm_task.txt
发布于 2021-02-19 16:40:52
可能您使用不同的用户创建了secure-string,并试图使用不同的用户转换回纯文本。请使用相同的用户使其安全,并将其转换回纯文本。
https://stackoverflow.com/questions/60837357
复制相似问题