在 Server Core 2019 上使用具有本地帐户的 Power Shell Remoting 时访问被拒绝

Posted

技术标签:

【中文标题】在 Server Core 2019 上使用具有本地帐户的 Power Shell Remoting 时访问被拒绝【英文标题】:Access Denied when using Power Shell Remoting with local account on Server Core 2019 【发布时间】:2019-07-01 07:50:40 【问题描述】:

我想在 Windows Server Core 2019 上使用 power shell 远程触发一些命令。

我正在使用以下进入远程Session:

$Username   = "x.x.x.x\Administrator"
$PasswordSS = ConvertTo-SecureString 'The-Password' -AsPlainText -Force
$Cred       = New-Object System.management.Automation.PSCredential $Username,$PasswordSS
Enter-PSSession -ComputerName 'x.x.x.x' -Credential $cred

然后连接失败并显示以下消息:

Enter-PSSession:连接到远程服务器 x.x.x.x 失败,原因是 以下错误消息:访问被拒绝。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。在行:4 字符:2 + Enter-PSSession -ComputerName 'x.x.x.x' -Credential $cred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (x.x.x.x:String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

远程计算机在本地网络上,我可以 ping 它。 管理员帐户是远程计算机上的本地帐户。 远程 ip 在客户端的受信任主机列表中。 PSRemoting 已在远程计算机上启用。

我错过了什么?帮助将不胜感激。

【问题讨论】:

只是为了测试,以另一个用户身份打开 powershell(使用您为其创建安全字符串的用户),然后尝试执行 Enter-PSSession 如果这有效,您可能需要查看您的 $cred再次。 嗨,对不起,我无法关注你。 “您为其创建安全字符串的那个”是什么意思? 我的意思是使用与您创建安全字符串相同的用户名 ("x.x.x.x\Administrator") 和密码 (The-Password) 打开 powershell。 那行不通。远程帐号只是本地帐号,远程电脑和客户端不在同一个域。 【参考方案1】:

这应该在评论中。次数不够

一个。重置 PSSession 配置: https://***.com/a/22385798/10994804

b.将-ComputerName 'x.x.x.x 添加到受信任的主机。

Get-Item WSMan:\localhost\Client\TrustedHosts

Set-Item WSMan:\localhost\Client\TrustedHosts -Value x.x.x.x -Force

【讨论】:

不工作。远程主机已经在trustedHosts 文件中 这种情况以前有效,现在无效?【参考方案2】:

上下文分析:

您在安装过程中选择了其他输入语言,而不是时间和货币格式语言。但是,欢迎屏幕会忽略您的选择。

在安装结束时,在第一次启动时,当您被要求输入管理员帐户的密码时,您输入了 时间和货币格式语言的密码,但您不是意识到这一点。

每次登录时,您都将使用时间和货币格式语言,直到您更改此行为,但您仍然没有意识到这一点。

这就是为什么你不能:

PSRemote RDP 使用 ALT + CTRL + SUPPR 更改本地管理员密码

解决方案:

为了能够 RDP 或 PSRemote,您必须再次设置密码,但使用 PowerShell

Set-LocalUser -Name Administrator -Password (Read-Host -AsSecureString)

但是,现在您将无法再使用控制台登录。 要解决此问题,您必须更改欢迎屏幕语言。

适用于几台计算机的简单图形解决方案:

    在命令提示符下键入 intl.cpl 以打开区域控制面板。 转到“管理”选项卡。 点击复制设置按钮。 选中欢迎屏幕和系统帐户复选框。 点击确定

适用于多台计算机的 PowerShell 解决方案:

1.检查您当前的替代品

Get-ItemProperty -Path 'HKCU:\Keyboard Laytout\Substitutes'

键盘标识符的完整列表可以在 Microsoft Docs 上找到:

Keyboard Identifiers and Input Method Editors for Windows

2.检查默认用户帐户的当前替代品

Get-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes'

3。将一个或所有缺少的替代品添加到默认用户帐户

New-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes' -Name '00000809' -Value '00000040c' -PropertyType 'String'

4。请查看默认用户帐户

预加载键的当前值以获取信息
Get-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Preload'

5。使用 替代名称 配置 Preload key 的值 1,该替代名称将首先在 欢迎屏幕 上使用。 (如果需要,您还可以从 Preload 键中删除其他值,甚至重新排序...)

Set-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Preload' -Name 1 -Value '00000809'

【讨论】:

问错了吗? 并非如此。最初的问题只是在这种情况下出现的几种症状之一。但是,它可能是其中最明显和最常见的。我猜如果我们更改标题,受影响的用户将找不到此页面...

以上是关于在 Server Core 2019 上使用具有本地帐户的 Power Shell Remoting 时访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

使用新的 ASP.NET Core 应用程序连接到 SQL Server 时出现问题

如何使用 Docker 在 SQL Server 数据库上运行 EF Core 迁移?

Windows Server 2019 Core(4)-安装Docker

如何在 Visual Studio 2019 中使用具有功能的 .net core + typescript + webpack + npm 模块?

在WinSrv 2016 Core模式下安装Exchange Server 2019预览版

jenkins publish .net core application to linux server in docker