我一直在与Powershell合作已有一段时间,但我不明白加密是如何工作的,甚至不确定我是否使用了正确的语法来阅读帮助文件。
#Get User Information
$User = Read-Host "Please enter your username"
$Password = Read-Host "Please enter your password. This will be encrypted" -AsSecureString | ConvertTo-SecureString -AsPlainText -Force
#Define a Key File
$KeyFile = "C:\Powershell\AES.key"
$Key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | out-file $KeyFile
#Encrypt using AES
$PasswordFile = "C:\Powershell\Password.txt"
$KeyFile = "C:\Powershell\AES.key"
$Key = Get-Content $KeyFile
$Password | ConvertFrom-SecureString | Out-File $PasswordFile
#Set credentials to be called.
$myCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
#Open text file.
Invoke-Command -ComputerName localhost -Credential $MyCredentials -ScriptBlock{
Invoke-Item C:\Powershell\Password.txt
}
我在运行时收到错误,我不知道为什么我不能管这个:
ConvertFrom-SecureString:输入对象不能绑定到任何输入对象 命令的参数,因为命令不采用 管道输入或输入及其属性不匹配任何 采用管道输入的参数。在C:\ Powershell \ Password.ps1:15 焦炭:13 + $密码| ConvertFrom-SecureString -Key $ Key | Out-File $ PasswordFile + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument:(System.Security.SecureString:String)[ConvertFrom-SecureString], ParameterBindingException + FullyQualifiedErrorId:InputObjectNotBound,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand
是否有任何加密专家可以提供帮助?我试图简单地将密码保存到文本文件(加密)然后我想使用另一个脚本使用加密密码使用新凭证调用各种程序,但我甚至无法使加密密码正常工作。提前谢谢。
答案 0 :(得分:2)
简单易懂:
将凭据对象保存到磁盘:
$credential = Get-Credential
$Key = [byte]1..32
$credential.Password | ConvertFrom-SecureString -Key $Key | Set-Content c:\cred.key
将其加载回Powershell:
$Key = [byte]1..32
$username = "type the username here"
$encrypted = Get-Content c:\cred.key | ConvertTo-SecureString -Key $Key
## Create The Credential Object:
$credential = New-Object System.Management.Automation.PsCredential($username, $encrypted)
确保这不安全,因为看到您的代码的每个人都可以重新使用该凭证,
如果您根本没有使用密钥,凭证将与您当前的用户一起加密,只有当前用户才能对其进行解密。