使用 PowerShell 和 cmdkey 添加 Windows 个凭据
Add Windows Credentials using PowerShell & cmdkey
我正在尝试使用来自某些 UI 的凭据提示使用 cmdkey:
添加 Windows 凭据
$sessionCredential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "Server Crdentials")
$ps = ConvertFrom-SecureString -SecureString $sessionCredential.password
cmdkey.exe /add:server1 /user:$($sessionCredential.UserName) /pass:$($ps)
凭据已正确添加,但密码未正确添加。
我能做什么?
直接使用 CredentialManager PowerShell module. It saves the password in the same place as cmdkey
, but it can take PSCredential 对象,无需转换为文本。
Import-Module CredentialManager
# Get the credential from the user with a windows credentials prompt:
$SessionCredential = Get-Credential -Message 'Please enter your server credentials'
# Save the credential object directly without unwrapping it:
New-StoredCredential -Credentials $SessionCredential -Target ServerCredentials -Persist Enterprise `
-Comment "Server Credentials for $($SessionCredential.UserName)" > $null
# Open the credential later
$SavedCred = Get-StoredCredential -Target ServerCredentials
# Delete if needed
Remove-StoredCredential -Target ServerCredentials
cmdkey /pass:$($ps)
由于PowerShell乱码密码字符容易出错
显然,问题是 ConvertFrom-SecureString 正在返回一个 加密的标准字符串 、ConvertFrom-SecureString.
获取纯文本的选项在 PowerShell 5.1 上不可用。
我找到了正确的转换 。
我知道它不安全。它在安全客户端中使用。
查看下面的固定代码:
$sessionCredential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "Server Crdentials")
$mpass = [System.Net.NetworkCredential]::new("",$sessionCredential.password).Password
cmdkey.exe /add:server1 /user:$($sessionCredential.UserName) /pass:$($mpass)
非常有效。唯一需要注意的是在使用之前需要 copy/distribute CredentialManager 模块。
我正在尝试使用来自某些 UI 的凭据提示使用 cmdkey:
添加 Windows 凭据$sessionCredential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "Server Crdentials")
$ps = ConvertFrom-SecureString -SecureString $sessionCredential.password
cmdkey.exe /add:server1 /user:$($sessionCredential.UserName) /pass:$($ps)
凭据已正确添加,但密码未正确添加。
我能做什么?
直接使用 CredentialManager PowerShell module. It saves the password in the same place as cmdkey
, but it can take PSCredential 对象,无需转换为文本。
Import-Module CredentialManager
# Get the credential from the user with a windows credentials prompt:
$SessionCredential = Get-Credential -Message 'Please enter your server credentials'
# Save the credential object directly without unwrapping it:
New-StoredCredential -Credentials $SessionCredential -Target ServerCredentials -Persist Enterprise `
-Comment "Server Credentials for $($SessionCredential.UserName)" > $null
# Open the credential later
$SavedCred = Get-StoredCredential -Target ServerCredentials
# Delete if needed
Remove-StoredCredential -Target ServerCredentials
cmdkey /pass:$($ps)
由于PowerShell乱码密码字符容易出错
显然,问题是 ConvertFrom-SecureString 正在返回一个 加密的标准字符串 、ConvertFrom-SecureString.
获取纯文本的选项在 PowerShell 5.1 上不可用。
我找到了正确的转换
我知道它不安全。它在安全客户端中使用。
查看下面的固定代码:
$sessionCredential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "Server Crdentials")
$mpass = [System.Net.NetworkCredential]::new("",$sessionCredential.password).Password
cmdkey.exe /add:server1 /user:$($sessionCredential.UserName) /pass:$($mpass)