【发布时间】:2022-01-03 18:41:16
【问题描述】:
搜索这个问题的答案会发现很多关于 GitHub 凭据的信息,但没有关于这个特定问题的信息。 我开始使用 PowerShell (PoSH) Cmdlet 'Get-Credential',因为我的公司使用双重身份验证 (2FA),因此用户名/密码无法从我的桌面(用户帐户)远程访问服务器(管理员帐户)。 另外,我刚刚开始使用 VS Code。 问题是,当运行一个简单的 PoSH sn-p 时,在 PoSH ISE 中使用 Get-Credential 我得到一个弹出窗口,让我选择我需要的证书,然后输入一个 Pin。当我在 VS Code 中运行相同的 sn-p 时,弹出窗口永远不会出现。 有谁知道这是为什么,我可以解决吗?
这里是sn-p供参考。
$serverList = Get-Content "C:\temp\Servers.txt"
$cred = Get-Credential
ForEach ($Server in $serverList){
$OS = Invoke-Command -Credential $cred -ComputerName $Server -ScriptBlock {
(get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
}
Write-Host $Server, $OS
}
谢谢大家。
【问题讨论】:
-
它应该出现在要求凭据的命令行中,我相信弹出窗口仅适用于 ISE 应用程序。确实看到了非常奇怪的情况,因为我也使用带有证书的智能卡。解决方案是否可以以提升的方式打开 VSC,因此它继承了该智能卡的权限?除此之外,我似乎在外网上找不到任何与它相关的东西。如果您能弄清楚如何阻止对象:
PowerShell.exe -Command "Get-Credential"这可能有效,但它只会返回一个字符串对象。也许导出到 XML? -
Get-Credential行为似乎已从 PS 5 更改为 PS 7。在 PowerShell 5.1 控制台(由 ISE 使用)中,我得到一个 GUI 提示,而在 PS 7.2.1(由 VSCode 使用)我在控制台中收到提示。 -
@SantiagoSquarzon 我认为这不能满足 OP 使用 2 因素身份验证的要求。有用于显示标准信用 UI 的原生 API
CredUIPromptForWindowsCredentials。让它使用P/Invoke 显示一个对话框,但我目前懒得弄清楚如何将结果转换为PSCredential对象。 -
这是我目前所拥有的(不完整):gist.github.com/zett42/b32086e25fa8ff84d8841e3bb4835017
-
@zett42 我在使用智能卡时使用了这个github.com/bongiovimatthew-microsoft/pscredentialWithCert,效果很好,你可能会在那里找到有用的东西。
标签: powershell visual-studio-code