迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

使用 PowerShell 获取凭证

作者:迹忆客 最近更新:2024/03/01 浏览次数:

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

以管理员身份运行 PowerShell 脚本

发布时间:2024/03/01 浏览次数:87 分类:编程语言

本文将展示如何在不输入管理员凭据的情况下以管理员权限运行 powershell 脚本。如果代码片段未在提升的 Windows PowerShell 中运行,则以下脚本将自行提升你的脚本。

使用 Windows PowerShell 启动进程

发布时间:2024/03/01 浏览次数:58 分类:编程语言

本文将解释 Start-Process cmdlet 是什么以及参数如何与 cmdlet 一起使用。本文还展示了使用 Start-Process cmdlet 的好处

使用 PowerShell 远程处理执行命令

发布时间:2024/03/01 浏览次数:144 分类:编程语言

本文将讨论 PowerShell 远程处理的工作原理、几个 PowerShell 远程处理命令,以及我们如何将其投入实际使用。我们还将区分它与许多类似 cmdlet 的优势。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便