将存储的信用传递到 bat 文件
Pass Stored Creds to bat file
我想弄清楚是否有办法在 Windows Cred 保险库中获取存储的凭据并将其传递给需要凭据的 bat 文件。我发现了一个非常古老的 bat 文件,其中包含明文的用户名和密码。这些用于针对门户进行身份验证,并且必须由 bat 以明文形式读取。我在我的服务器上存储了我想要使用的凭据,这样我就可以弥补这个安全漏洞,但我不是 100% 确定如何传递密码,因为它必须是明文形式。这是我拥有的:
$creds = Get-StoredCredential -Target "Username"
$password = $creds.Password
$username = $creds.UserName
Start-Process cmd.exe "/c C:\trigger.bat `"argument1`" $username $password `"Argument2`" Argument3" -NoNewWindow -Verbose
当我在我的行中以明文形式输入密码时,它起作用了。如果我使用 $password 它会抛出一个身份验证错误。我假设这是因为 $password 是一个存储的 PS 对象并且没有传递给 cmd "correctly"。有解决办法吗?
PS: Get-StoredCredential 来自 CredentialManager 模块。
Get-StoredCredential
, when called without -AsCredentialObject
, yields PSCredential
instances。
PSCredential.Password
property you are accessing is not a String
but a SecureString
,因此您无法像您尝试的那样检索明文密码。
基于 you can use the PSCredential
to get a NetworkCredential
and then use its Password
属性...
$password = $creds.GetNetworkCredential().Password
无论如何,当您使用 $username
和 $password
遇到身份验证错误时,您应该确保这些变量包含您期望的值。
如果 $creds
包含一个 PSCredential
对象,那么您应该可以替换为:
$password = $creds.Password
有了这个:
$password = $creds.GetNetworkCredential().Password
我想弄清楚是否有办法在 Windows Cred 保险库中获取存储的凭据并将其传递给需要凭据的 bat 文件。我发现了一个非常古老的 bat 文件,其中包含明文的用户名和密码。这些用于针对门户进行身份验证,并且必须由 bat 以明文形式读取。我在我的服务器上存储了我想要使用的凭据,这样我就可以弥补这个安全漏洞,但我不是 100% 确定如何传递密码,因为它必须是明文形式。这是我拥有的:
$creds = Get-StoredCredential -Target "Username"
$password = $creds.Password
$username = $creds.UserName
Start-Process cmd.exe "/c C:\trigger.bat `"argument1`" $username $password `"Argument2`" Argument3" -NoNewWindow -Verbose
当我在我的行中以明文形式输入密码时,它起作用了。如果我使用 $password 它会抛出一个身份验证错误。我假设这是因为 $password 是一个存储的 PS 对象并且没有传递给 cmd "correctly"。有解决办法吗?
PS: Get-StoredCredential 来自 CredentialManager 模块。
Get-StoredCredential
, when called without -AsCredentialObject
, yields PSCredential
instances。
PSCredential.Password
property you are accessing is not a String
but a SecureString
,因此您无法像您尝试的那样检索明文密码。
基于PSCredential
to get a NetworkCredential
and then use its Password
属性...
$password = $creds.GetNetworkCredential().Password
无论如何,当您使用 $username
和 $password
遇到身份验证错误时,您应该确保这些变量包含您期望的值。
如果 $creds
包含一个 PSCredential
对象,那么您应该可以替换为:
$password = $creds.Password
有了这个:
$password = $creds.GetNetworkCredential().Password