gpt4 book ai didi

powershell - 没有出现凭据选择弹出窗口

转载 作者:行者123 更新时间:2023-12-05 05:50:05 28 4
gpt4 key购买 nike

搜索此问题的答案会发现很多关于 GitHub 凭据的信息,但没有找到关于这个特定问题的信息。我开始使用 PowerShell (PoSH) Cmdlet“Get-Credential”,因为我的公司使用双因素身份验证 (2FA),因此用户名/密码无法从我的桌面(用户帐户)远程连接到服务器(管理员帐户)。此外,我刚刚开始使用 VS Code。问题是,当运行一个简单的 PoSH 片段时,在 PoSH ISE 中使用 Get-Credential 我得到一个弹出窗口,让我选择我需要的证书,然后输入 Pin。当我在 VS Code 中运行相同的片段时,弹出窗口从未出现。有谁知道这是为什么,我可以解决吗?

这是供引用的片段。

$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

}

谢谢大家。

最佳答案

TL;DR:该行为是设计使然。 VS Code 是微软在跨平台开发体验方面努力的成果。 PowerShell版本默认为跨平台的PowerShell Core。它专注于终端体验和脚本。因此,您无法在 VS Code 上触发 Windows native 凭据提示。

当您使用 $PSVERSIONTABLE 检查版本时,您会看到如下内容:

=====> PowerShell Integrated Console v2021.12.0 <=====

PS C:\Users\Foo> $PSVersionTable


Name Value
---- -----
PSVersion 7.2.1
PSEdition Core
GitCommitId 7.2.1
OS Microsoft Windows 10.0.18363
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion

默认情况下,这不是 powershell.exe,这意味着它不是 Windows native 和 Powershell 5.x 或您与 ISE 或控制台一起使用的更低版本。它是使用 pwsh.exe 的 VS Code 主机,6.0 及更高版本的跨平台版本。

您可以查看文档: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-credential?view=powershell-7.2

您可以看到,对于 6.x 及更高版本,它始终专注于脚本和终端。坏消息是 VS Code 也是围绕跨平台方法构建的。因此,即使您将终端中的配置文件更改为使用如下所示的 Windows Powershell,您也可以使用 PowerShell 5.1,但无法查看该提示:

"PowerShell Core": {
"path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe"
},
"Windows PowerShell (x64)": {
"path": "${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
}

总之,您无法使用 VS Code 获得该提示。除了在集成终端中输入powershell.exe并粘贴代码外,基本上没有使用VS Code。它不会帮助你。对于此要求,我会坚持使用 ISE,请注意它已贬值。

编辑 1:添加了 TL;DR。

编辑 2:我 created a cmdlet仅弹出默认凭据对话框并返回一个 PSCredential 对象。

编辑 3:我发布了一个名为 Get-WinCredential 的包,这使您可以利用旧式和现代式的凭证对话框。这对我来说是一次很好的锻炼。

就像其他评论所有者一样,我使用了 P/Invoke

关于powershell - 没有出现凭据选择弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70570097/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com