使用 PowerShell 获取凭证
PSCredential 对象是一种创造性的方式,可以安全地存储凭证并将其传递给各种服务。许多本机和第三方 cmdlet 在许多不同的命令上都需要 PSCredential 对象。此外,凭证是 Windows PowerShell 中普遍存在的对象。
本文将讨论如何使用 Windows PowerShell Get-Credential
cmdlet 并在没有任何提示的情况下获取凭证。
在 PowerShell 中使用 Get-Credential
获取凭证
通常,要创建 PSCredential 对象,我们会使用 Get-Credential
cmdlet。上述 cmdlet 是 Windows PowerShell 接收输入以创建 PSCredential 对象的最常见方式。该对象主要由用户名和密码组成。
每次执行时,它都会在命令行中提示输入用户名和密码,或者会出现一个弹出对话框,询问用户的凭证。
在 PowerShell 中使用 Get-Credential
Cmdlet 而不提示获取凭证
例如,我们正在开发一个在计划任务中运行的自动化脚本,或者是一些更强大的自动化框架的一部分。在这种情况下,没有人操作控制台来输入用户名和密码。因此,最好从头开始构建 PSCredential 对象。
创建没有交互的 PSCredential 对象涉及加密过程。PSCredential 对象需要纯文本用户名和加密密码。
要加密密码,我们需要将标准字符串转换为安全字符串。我们通过使用 ConvertTo-SecureString
cmdlet 来做到这一点。我们可以将纯文本密码传递给这个 cmdlet,因为它是纯文本,所以我们必须使用 -PlainText
和 -Force
参数。这两个参数都表明我们正在传递一个纯文本字符串,不需要确认。
$pass = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force
创建安全字符串后,就该创建 PSCredential 对象了。为此,我们可以使用 New-Object
cmdlet 来定义 System.Management.Automation.PSCredential
的对象。PSCredential 类有一个构造函数,它将接受纯文本用户名和我们可以用作参数的安全字符串密码。
$credential = New-Object System.Management.Automation.PSCredential ('user01', $pass)
我们现在有一个 PSCredential 对象,其中我们的纯文本用户名和安全字符串密码保存在一个变量中。我们现在可以将 $credential
变量传递给几个需要 -Credential
参数的命令,这将非常有效。要验证它是否是使用预期的用户名和密码创建的,我们可以引用 UserName
属性,显示你之前使用的用户名。
示例代码:
$credential.Username
输出:
user01
密码通过安全字符串加密,但如果你在同一台计算机上读取密码并登录用户,我们可以使用 GetNetworkCredential()
方法以纯文本形式查看密码。因此,在 $credential
变量的末尾附加 GetNetworkCredential()
,但请注意,一旦执行,你将不知道控制台上打印的密码。
示例代码:
$credential.GetNetworkCredential()
输出:
UserName Domain
-------- ------
user01
要查看密码,你需要在 GetNetworkCredential()
返回的对象上使用 Password 属性。返回的密码应该与你提供给 PSCredential 构造函数的密码相同。
示例代码:
$credential.GetNetworkCredential().Password
输出:
MySecretPassword
现在我们已经验证了 $credential
变量包含我们的用户名和密码,我们可以使用该变量作为 Get-Credential
cmdlet 中的参数。
Get-Credential -Credential $credential
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。