Powershell 获取SecureString作为纯文本参数

Powershell 获取SecureString作为纯文本参数,powershell,securestring,Powershell,Securestring,我正在尝试获取SecureString作为命令行PowerShell的纯文本参数 我知道安全字符串的形式。 例如,字符串“abc”将是安全字符串“71289371289” 然后,我想将“71289371289”作为参数传递给脚本(从命令行运行),这将是我的安全字符串,然后将其解密为明文,将其传递给我从Powershell调用的另一个程序 我该怎么做这样的事 更新: 我最终使用Credfile with PSCredential在重新启动过程中保留凭据,直到脚本完成。您可以使用SecureStri

我正在尝试获取SecureString作为命令行PowerShell的纯文本参数

我知道安全字符串的形式。 例如,字符串“abc”将是安全字符串“71289371289”

然后,我想将“71289371289”作为参数传递给脚本(从命令行运行),这将是我的安全字符串,然后将其解密为明文,将其传递给我从Powershell调用的另一个程序

我该怎么做这样的事

更新:


我最终使用Credfile with PSCredential在重新启动过程中保留凭据,直到脚本完成。

您可以使用SecureStringToBSTR将其转换回明文密码:

Param(
    $securestring = (Read-Host -AsSecureString)
)
Write-Host "Encrypted Password: $(ConvertFrom-SecureString $securestring)"
$ClearText = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($securestring))
Write-Host "Original Password: $ClearText"

它必须是SecureString吗?您可能会发现PSCredential对象更易于使用,并从中提取纯文本密码,尤其是在函数中。可能重复@Persistent13它必须是SecureString。我想有两个场景:1。用户将明文安全字符串作为参数提供给PS.2。如果用户没有在PS的命令行上提供用户名和密码,则会提示用户输入用户名和密码。安全字符串是加密对象,而不是字符串。您可以在安全字符串和明文字符串之间来回转换,但用户不能直接输入安全字符串。您应该为场景2创建一个新问题。我这里的问题是需要屏蔽输入
Read Host-AsSecureString
将在输入时屏蔽输入。这仍然是一个在运行命令行时可以使用-Parameter调用的参数吗?因为它似乎撤销了屏蔽。如果您将上面的代码添加到名为DecryptPassword.ps1的Powershell脚本中,您将使用以下命令调用它:
$Encrypted=(ConvertTo SecureString“01000000d08c9ddf0115d1118c7a00c04fc2[因发布而缩短]…)
\DecryptPassword.ps1-securestring$Encrypted
如果不提供-securestring参数,系统将提示您输入该参数(明文,未加密),并在输入字符时将其屏蔽。这是一个进步。是否可以在需要使用secure string参数运行此ps1的计划任务上使用此选项?