sql-server
  • powershell
  • 2013-10-15 3 views 2 likes 
    2

    Я использовал статью MSDN Enable or Disable a Server Network Protocol (SQL Server PowerShell) и я бегу в проблемы на линии:Не удается получить объект SMO для ManagedComputer

    $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> в ошибке. Я также пробовал пропустить все с первого /, но не повезло.

    Я пробовал использовать cmd, powershell и sqlps. Я вошел в систему как Администратор, и все мои окна говорят, что Администратор наверху, поэтому я считаю, что я выполняю команды как администратор.

    Я работаю на Windows Server 2012 с установленным MS Sql Server 2012.

    Моя долгосрочная цель - создать утилиту для установки SQL Server на новую машину без необходимости взаимодействия с пользователем.

    Как устранить проблему с линией кода из статьи MSDN?

    +1

    Как написано, код будет работать только с экземпляром по умолчанию. Вы случайно используете именованный экземпляр? –

    +0

    @ChadMiller Я считаю, что использую экземпляр по умолчанию. Я не указываю имя экземпляра, когда я вхожу в систему через SSMS, и когда я делаю SELECT @@ SERVICE, результатом является 'MSSQLSERVER'. –

    +0

    Я включил эту строку в начало сценария powershell: 'Импорт-модуль 'sqlps -DisableNamechecking' и вернулся к явным помещением' <имя_компьютера> ', и теперь он работает. Я думаю, что получаю ошибки из-за отсутствия модуля импорта, но к тому времени, когда я его импортировал, я начал оставлять имя компьютера пустым и начал получать ошибки XPath. –

    ответ

    0

    я включил эту линию в начале сценария PowerShell:

    Import-Module "sqlps" -DisableNamechecking 
    

    и вернулся к явно положить в <computer_name>, и теперь он работает.

    Я думаю, что я получал ошибки из-за того, что не выполнял импортный модуль, но к тому времени, когда я его импортировал, я начал оставлять имя компьютера пустым и начал получать ошибки XPath.

    +0

    Моя проблема была похожа ... У меня было имя компьютера в переменной, и поэтому я думал, что мне не нужны кавычки вокруг него. Оказывается, ему нужны цитаты. – Ben

    Смежные вопросы