在windows 2012 Server 上执行New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force 命令时,报错了 报错信息: New-ItemProperty : 无法使用接口。此提供程序未实现 IDynamicPropertyCmdletProvide r 接口。 所在位置 行:1 字符: 1 + New-ItemProperty -Path "C:\Program Files\OpenSSH-Win64" -Name DefaultShell -V alu ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotImplemented: (:) [New-ItemProperty], PSNotSup
portedException
+ FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.NewIt
emPropertyCommand
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明您在尝试使用 PowerShell 命令 New-ItemProperty 来创建或修改注册表项时,遇到了一个不支持的操作。具体来说,错误提示“此提供程序未实现 IDynamicPropertyCmdletProvider 接口”意味着您使用的 PowerShell 版本或者环境可能不完全支持该操作。
考虑到您是在 Windows Server 2012 上操作,并且涉及到 OpenSSH 的配置,这里有几个建议来解决这个问题:
检查 PowerShell 版本:确保您使用的是 PowerShell 的较新版本。虽然 Windows Server 2012 自带的 PowerShell 版本可能较低,但您可以尝试更新到 PowerShell 5.0 或更高版本,因为这些版本更有可能支持您需要的功能。可以通过运行 (Get-Host).Version 来查看当前的 PowerShell 版本。
使用 Reg.exe 或 regedit.exe:如果 PowerShell 方法不奏效,可以考虑使用传统的注册表编辑工具。打开命令提示符(cmd)并运行以下命令来达到同样的目的:
reg add "HKLM\SOFTWARE\OpenSSH" /v DefaultShell /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" /f
这条命令会直接通过 reg 命令行工具添加注册表项。
手动编辑注册表:作为最后的手段,您也可以直接使用注册表编辑器(regedit.exe)来进行修改。导航到 HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH,右键点击该目录,选择“新建”->“字符串值”,然后命名为 DefaultShell,双击它并将数值数据设置为 "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"。
重启 SSH 服务:无论采用哪种方法修改了默认 Shell,记得修改后重启 OpenSSH 服务以使更改生效。可以通过运行 Restart-Service sshd(如果使用 PowerShell)或 net stop sshd && net start sshd(如果使用命令提示符)来重启服务。
请按照上述步骤尝试解决问题,如果问题依旧,请进一步检查是否有权限问题,确保您的账户有足够权限对注册表进行写入操作。