无法获取ManagedComputer的smo对象

时间:2013-10-15 19:29:44

标签: sql-server powershell

我一直在使用MSDN文章Enable or Disable a Server Network Protocol (SQL Server PowerShell),并且遇到了问题:

$uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"

我得到的错误信息是:

Exception calling "GetSmoObject" with "1" argument(s): "Attempt to retrieve data for object failed for ManagedComputer '<computer_name>'."
At line:1 char:24
+ $Np = $wmi.GetSmoObject <<<< ($uri)
    + CategoryInfo           : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId  : DotNetMethodException

我正在用我的电脑名称替换<computer_name>。我也尝试从命令中省略<computer_name>(我正在尝试配置运行脚本的机器),并且我得到了相同的错误,包括它在显示正确的<computer_name>错误。我也尝试省略第一个/上的所有内容,但没有运气。

我尝试过使用cmdpowershellsqlps。我以管理员身份登录,并且我的所有窗口都显示管理员位于顶部,所以我认为这意味着我以管理员身份运行命令。

我在安装了MS Sql Server 2012的Windows Server 2012上运行。

我的长期目标是创建一个实用程序,在新机器上设置SQL Server,而无需用户交互。

如何使用MSDN文章中的代码行解决我的问题?

2 个答案:

答案 0 :(得分:0)

我在powershell脚本的开头包含了这一行:

Import-Module "sqlps" -DisableNamechecking

然后又回到明确地放入<computer_name>,现在它可以正常工作。

我认为我因为没有执行导入模块而遇到错误,但是当我导入它时,我开始将计算机名留空,并开始收到XPath错误。

答案 1 :(得分:0)

如果您像我一样无法使用SQLExpress(版本12 = 2014):

查看此注册表位置:

计算机\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL12.SQLEXPRESS \ MSSQLServer \ SuperSocketNetLib \ Tcp

管理器显示该值,但是我无法在Win10-UI问题中更改这些值。 C:\ Windows \ System32 \ SQLServerManager12.msc