WMI Query Script как работа - PullRequest
       5

WMI Query Script как работа

1 голос
/ 15 марта 2011

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

Ради пространства здесь есть соответствующая часть скрипта вызова:

ProcessServers.ps1

Start-Job -FilePath .\GetServerDetailsLight.ps1 -ArgumentList $sqlsrv,$destdb,$server,$instance

GetServerDetailsLight.ps1

param($sqlsrv,$destdb,$server,$instance)

$password = get-content C:\SQLPS\auth.txt | convertto-securestring
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "DOMAIN\MYUSER",$password

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')
$box_id = 0;

if ($sqlsrv.length -eq 0) {
write-output "No data passed"
break
}

function getinfo {
    param(
        [string]$svr,
        [string]$inst
        )
    "Entered GetInfo with: $svr,$inst"
    $cs = get-wmiobject win32_operatingsystem -computername $svr -credential $credentials -authentication 6 -Verbose -Debug | 
    select Name, Model, Manufacturer, Description, DNSHostName, Domain, DomainRole, PartOfDomain,
    NumberOfProcessors, SystemType, TotalPhysicalMemory, UserName, Workgroup
    write-output "WMI Results: $cs"
}
getinfo $server $instance
write-output "Complete"

Выполненный как задание, он будет отображаться как «работающий» навсегда:

PS C:\sqlps> Start-Job -FilePath .\GetServerDetailsLight.ps1 -ArgumentList DBSERVER,LOGDB,SERVER01,SERVER01

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
21              Job21           Running    True            localhost            param($sqlsrv,$destdb,...

GAC    Version        Location
---    -------        --------
True   v2.0.50727     C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SqlServer.Smo\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Smo.dll
getinfo MSDCHR01 MSDCHR01
Entered GetInfo with: SERVER01,SERVER01

Последний вывод, который я когда-либо получаю, - «Введено GetInfo with: SERVER01, SERVER01». Если я запускаю его вручную так: PS C:\sqlps> .\GetServerDetailsLight.ps1 DBSERVER LOGDB SERVER01 SERVER01 Запрос WMI выполняется точно так же, как и ожидалось.

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

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Это один экземпляр, который я смог найти.http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/a6c816dd-2c2c-47bc-a2d0-238fbb9d66a6

Есть много других обсуждений, которые я видел вокруг того же самого.

В любом случае, чтобы убедиться, что хранилище WMI не повреждено, просто попробуйте перекомпилировать его.Поместите следующие строки в командный файл и запустите:

net stop winmgmt
c:
cd c:\windows\system32\wbem
rd /S /Q repository
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
mofcomp exwmi.mof
mofcomp -n:root\cimv2\applications\exchange wbemcons.mof
mofcomp -n:root\cimv2\applications\exchange smtpcons.mof
mofcomp exmgmt.mof
0 голосов
/ 16 марта 2011

Ваш скрипт работал нормально для меня с учетными данными записи, но заблокирован, если учетные данные были неправильными.

0 голосов
/ 16 марта 2011

Сделайте себе одолжение и проверьте WinRM. Если удаленное взаимодействие отключено, вы будете испытывать именно этот набор симптомов.

Могут ли сценарии * .ps1 запускаться как фоновые задания, выполняющие сценарии * .ps1?

Как отладить фоновое задание PowerShell?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...