我希望能够使用 PowerShell 登录 VIServers 并让它在脚本第一次运行时询问凭据,然后将这些凭据保存在 password.txt 文件中,让 VIServer 只使用存储在本地的 password.txt 文件如果用户再次运行脚本,则为用户的计算机。痛点是,当用户想要多次运行脚本时,凭据提示会一次又一次地弹出。
我可以使用 Stackoverflow 上发布的另一个答案中的以下代码(链接: http: //www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-1)
它有效:
Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString |
Out-File "G:\dev\Password.txt"
$pass = Get-Content "G:\dev\Password.txt" | ConvertTo-SecureString
$User = "MyUserName"
$File = "G:\dev\Password.txt"
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential
-ArgumentList $User, (Get-Content $File | ConvertTo-SecureString)
我从 vmware 博客中找到了以下内容(链接:http: //blogs.vmware.com/PowerCLI/2011/11/have-you-seen-powerclis-credential-store-feature.html)
这是来自 vmware 博客的代码(有一些解释):
要使用凭证存储,我执行以下操作:
New-VICredentialStoreItem -Host 192.168.10.10 -User "Andrey" -Password "my favorite password"
现在我可以输入:
Connect-VIServer 192.168.10.10
当我没有指定用户和/或密码时,Connect-VIServer 会检查凭证存储,找到我新存储的凭证并使用它。
默认情况下,凭证存储文件存储在用户配置文件目录下。它是加密的。如果我让你感兴趣,请查看“help *VICredentialStoreItem”了解详细信息。
-Andrey Anastasov,PowerCLI 架构师
=============现在是我修改后的 VIServer 代码版本========== $Hostname = 192.168.10.10
New-VICredentialStoreItem -Host $Hostname -User $User -Password $pass
我在正确的轨道上吗?
我应该怎么做才能只输入 1 次凭据,然后让脚本调用 $creds 变量,而不必每次都输入凭据?