使用 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
相关文章
在 PowerShell 中安装 NuGet 包
发布时间:2024/03/01 浏览次数:161 分类:编程语言
-
本文将了解发生错误的原因以及安装适用于 PowerShell 的 NuGet 提供程序的分步指南。
在 PowerShell 中 Ping 主机名列表和输出结果到 CSV
发布时间:2024/03/01 浏览次数:53 分类:编程语言
-
本教程将教你 ping 主机名列表并将结果输出到 PowerShell 中的 CSV。
以管理员身份运行 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 的优势。
使用 PowerShell 将输出导出到文件
发布时间:2024/03/01 浏览次数:82 分类:编程语言
-
本文将讨论如何将输出数据导出到文件、将数据添加到现有文件以及使用 PowerShell 操作输出。
使用 PowerShell 将 CSV 导出到 Excel
发布时间:2024/03/01 浏览次数:109 分类:编程语言
-
本教程将教你使用 PowerShell 将 CSV 文件导出到 Excel 文件。