如何使用 PowerShell 安全地存储凭据

Jacki

您必须在 PowerShell 脚本中进行身份验证并在 PowerShell 中存储密码。有时,您希望获得凭据提示来填写凭据并运行脚本。另一次,您希望自动执行任务并以加密格式安全地保存密码。在本文中,您将了解如何使用 PowerShell 安全地存储凭据。

交互式与非交互式

  • 交互的方法需要用户交互,例如提示用户输入用户名和密码。当提供必要的信息时,它会进一步进行。
  • 非交互式该方法在脚本执行期间不需要用户输入,并且通常依赖于预先配置的设置、自动化过程或提前提供的数据。

重要的:始终安全地填写密码,切勿以纯文本形式填写。

参见:如何在有或没有凭据的情况下从 iPad 中删除 Meraki Management

如果您希望脚本提示输入用户名和密码,请按照以下方法之一中的步骤操作。

方法1.获取凭证

  1. 运行获取凭证cmdlet 将您的凭据安全地存储在$信用点多变的
$Creds = Get-Credential
  1. 将出现 Windows PowerShell 凭据请求,您必须在其中填写证书
  1. 运行$信用点PowerShell 中的变量
$Creds
  1. 输出显示用户名密码显示为安全字符串
UserName                       Password
--------                       --------
myusername System.Security.SecureString

方法 2.PSCredential

  1. 运行以下命令将您的凭据安全地存储在$信用点多变的
$Creds = [System.Management.Automation.PSCredential]::new((Read-Host -Prompt "Enter username"), (Read-Host -Prompt "Enter password" -AsSecureString))
  1. 输入用户名密码
Enter username: myusername
Enter password: ****************
  1. 运行$信用点PowerShell 中的变量
$Creds
  1. 输出显示用户名密码显示为安全字符串
UserName                       Password
--------                       --------
myusername System.Security.SecureString

当您有一个交互式运行的脚本并且每次都可以输入凭据时,这非常有用。但是,如果您不在计算机后面,并且希望通过计划任务自动执行脚本,该怎么办?然后,你必须使用不同的方法。

在 PowerShell 中存储凭据以实现自动化(非交互式)

要将凭据存储在系统上以便每次运行 PowerShell 脚本时都会加载凭据,您需要执行以下步骤:

  1. 运行获取凭证cmdlet 将您的凭据安全地存储在$信用点多变的
$Creds = Get-Credential
  1. 输入您的凭据
  2. 将凭证导出到加密的 XML 文件
$Creds | Export-CliXml -Path "C:credscredential.xml"

笔记:导出-Clixmlcmdlet 使用 Windows 数据保护 API 加密凭据对象。加密可确保只有您的用户帐户才能解密凭证对象的内容。导出的 CLIXML 文件不能在不同的计算机上或由不同的用户使用。

  1. 导航至路径并验证 XML 文件
  1. 打开XML文件并检查密码是否已加密
  1. 在您的 PowerShell 脚本中,您现在可以运行导入Clixmlcmdlet 并将其指向 XML 文件所在的路径,以便加载用户名和加密密码
$Creds = Import-CliXml -Path "C:credscredential.xml"

就是这样!

结论

您学习了如何使用 PowerShell 安全地存储凭据。在 PowerShell 中保存凭据有多种方法。检查它是交互式脚本还是非交互式脚本并应用正确的方法。始终确保密码填写安全,而不是明文。

您喜欢这篇文章吗?您可能还喜欢如何连接到 Microsoft Graph PowerShell。不要忘记关注我们并分享这篇文章。