В Powershell я перечисляю базы данных SQL следующим образом:

$SqlServers = @("SQL1", "SQL2") # SQL servers
foreach ($SqlServer in $SqlServers) {
  $SqlBasePath = "SQLSERVER:\SQL\$SqlServer\"

  foreach ($SqlInstanceName in (Get-ChildItem -Path $SqlBasePath -Name)) {
    Write-Host "Processing $SqlInstanceName"

    foreach ($SqlDatabase in (Get-ChildItem -Path $($SqlBasePath + $SqlInstanceName + "\Databases"))) {

Это прекрасно работает из командной строки, как учетная запись службы, которая должна запускать этот скрипт.

Однако при запуске из запланированной задачи я получаю ошибки "Отказано в доступе", что приводит к сбою перечисления.

(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
WARNING: Could not obtain SQL Server Service information. An attempt to connect
         to WMI on 'SQL1' failed with the following error: Access is denied. 

Запланированное задание настроено для запуска в качестве учетной записи службы и "с наивысшими привилегиями", что и стоит.

Что может привести к сбою доступа к WMI из запланированной задачи, в отличие от запуска непосредственно с той же учетной записью из командной строки, и как это исправить?

0