在 Windows PowerShell 脚本中使用 Get-Credential cmdlet

已完成

最佳做法是,管理员应有两个用户帐户。 每个管理员都应有一个用于日常活动的标准用户帐户和一个具有管理权限的帐户。 分离这些角色有助于避免意外损坏计算机系统并限制恶意软件的潜在影响。 Get-Credential cmdlet 有助于在仍然登录到标准用户帐户时使用管理帐户。

管理员运行的许多脚本都需要提升的权限。 例如,创建 Active Directory 域服务 (AD DS) 用户帐户的脚本需要管理权限。 甚至从远程计算机查询事件日志也可能需要管理权限。

运行脚本时提升权限的一种方法是在打开 Windows PowerShell 提示时使用“以管理员身份运行”选项。 如果使用“以管理员身份运行”,系统会提示输入凭据。 因此,在 Windows PowerShell 提示符处执行的所有操作都使用所提供的凭据。

作为使用“以管理员身份运行”来运行脚本的替代方法,可改为使用脚本提示来获取凭据。 许多 Windows PowerShell cmdlet 允许提供备用凭据集。 这样,脚本获取的凭据就可用于运行脚本中的各个命令。 可以使用“Get-Credential”提示获取凭据。 使用“Get-Credential”cmdlet 的语法是:

$cred = Get-Credential
Set-ADUser -Identity $user -Department "Marketing" -Credential $cred

弹出窗口中的默认文本是“输入凭据”。 可以使用“-Message”参数自定义此文本,使其更具描述性。 也可以使用“-UserName”参数填写“用户名”框。

使用 Export-Clixml 存储凭据

可以将凭据存储到文件以供以后重复使用,而不会提示输入凭据。 如果要将凭据存储到文件中,可使用 Export-Clixml。 对于凭据对象,Export-Clixml 在将凭据对象存储到 XML 文件之前对其进行加密。 使用以下语法将凭据对象存储到文件中。

$cred | Export-Clixml C:\cred.xml

Export-Clixml 使用的加密特定于用户且特定于计算机。 这意味着,如果存储加密凭据,则只有你能检索加密凭据,并且只能在最初用于存储它们的计算机上检索。 此操作有助于确保凭据的安全,但也意味着无法与其他用户共享凭据。

使用 SecretManagement 模块存储凭据

Microsoft 已发布 SecretManagement 模块,可用于存储和检索凭据。 此方法更适合存储可在多个用户和计算机之间共享的凭据。 SecretManagement 模块中包含的 cmdlet 可以从多个机密保管库访问凭据。

一些已知保管库包括:

  • KeePass
  • LastPass
  • CredMan
  • Azure KeyVault

PowerShell 库中提供了 SecretManagement 模块。 可以通过运行以下命令来安装 SecretManagement 模块:

Install-Module Microsoft.PowerShell.SecretManagement

Microsoft 还提供 SecretStore 模块,你可以使用该模块创建用于存储凭据的本地机密保管库。 但是,与使用 Export-Clixml 类似,保管库存储在本地计算机和当前用户上下文中。