Sql server Powershell异常/注册表项

Sql server Powershell异常/注册表项,sql-server,exception,powershell,registrykey,Sql Server,Exception,Powershell,Registrykey,我有一个脚本——及其相应的模块——它从SQL中列出了我实习的公司内不同服务器的所有实例。 此脚本在另一台主机上工作,但在我的主机上不工作。 我得到一个MethodInvocationException,错误消息如下: Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed." 错误来自模块内的文件,而不是实际脚本 我知道它非常通用,我不允许显示代码,但有任何关于

我有一个脚本——及其相应的模块——它从SQL中列出了我实习的公司内不同服务器的所有实例。 此脚本在另一台主机上工作,但在我的主机上不工作。 我得到一个
MethodInvocationException
,错误消息如下:

Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed."
错误来自模块内的文件,而不是实际脚本

我知道它非常通用,我不允许显示代码,但有任何关于如何解决它的指南/提示或提示吗?我试着玩一种叫做注册表键的东西,但我不确定它是如何工作的

请帮助?

您可以使用查看所有注册表访问。这将显示拒绝访问的对象,从那里您可以授予自己必要的访问权限

您需要设置合适的过滤器,否则您将被事件的数量所淹没!我建议如下:

Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed."
  • 路径:操作为“RegOpenKey”
  • 结果:“访问被拒绝”

选择2 在PowerShell中执行该命令,然后执行以下命令:

$> $Error[0]
这可能会打印出如下内容,这将告诉您它失败的密钥:

dir : Requested registry access is not allowed.
At line:1 char:1
+ dir
+ ~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:String) [Get-ChildItem], SecurityException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.GetChildItemCommand

您的问题是模块试图打开注册表项(启动regedit时看到的文件夹图标之一),而您没有访问该项的权限。您需要找到无法读取的注册表项,然后为自己提供访问权限(或者根据您所在的组织向网络管理员询问)。不过有一件事-您是否尝试过以管理员身份启动powershell?(右键单击powershell图标,然后单击“以管理员身份运行”)@RB。是的,我总是以管理员的身份运行它。我向高级DBA谈到了这一点,他说,默认情况下,用户可以访问HKEY_CURRENT_用户密钥。我将该密钥添加到模块中的一个文件中,但似乎没有任何更改。我是这样添加的:$regKey=$reg.OpenSubKey(“HKEY\U CURRENT\U USER\SOFTWARE\\Microsoft\\Microsoft SQL Server\\Instance Names\\SQL”),您需要使用我在回答中概述的两种方法中的一种来确定哪个键是您被“拒绝访问”的键,否则您几乎是瞎猜…@RB。很酷,但这并不能完全解决我的问题。你知道脚本有什么问题导致这个问题吗?我试过使用两个注册表键(当前用户和本地机器),这两个显然是默认的。不起作用。好吧,如果你可以访问你尝试过的两个键,那么问题一定是你没有尝试过的第三个键!使用Process Monitor,或检查$Error对象以确定是哪个。脚本本身不是原因-这是权限问题。。。