У меня есть сценарий PowerShell, который я написал для сравнения запланированных задач между двумя узлами нашего кластера серверов приложений. Он использует этот код для запроса задач с заданного сервера...
функция getTasks($сервер) {
вернуть Get-ScheduledTask -CimSession $server |
Где-объект TaskPath - как '*OurFolder*' |
ForEach-Object {
[pscustomobject]@{
Сервер = $сервер
Путь = $_.TaskPath
Имя = $_.ИмяЗадачи
Отключено = ($_.State -eq 'Отключено')
Команда = $_.Действия.Выполнить
Аргументы = $_.Действия.Аргументы
Интервал = $_.Triggers.RepetitionInterval
HashId = "$($_.Действия.Выполнить)|$($_.Действия.Аргументы)"
HashFull = "$($_.TaskPath)|$($_.TaskName)|$($_.Actions.Execute)|$($_.Actions.Arguments)|$(($_.State -eq 'Disabled '))"
}
}
}
Он отлично работает при запуске под моей учетной записью администратора домена.
Однако, когда я пытаюсь запустить его под нашей учетной записью службы в качестве запланированной задачи, он получает эту ошибку при попытке запросить запланированные задачи на другом узле...
Get-ScheduledTask: SERVER.domain.local: не удается подключиться к серверу CIM. В доступе отказано.
В F:\Applications\TaskSchedulerNodeCompare\compare-nodes.ps1:9 char:12
+ return Get-ScheduledTask -CimSession $server |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: ResourceUnreachable: (MSFT_ScheduledTask:String) [Get-ScheduledTask], CimJobException
+ FullyQualifiedErrorId: CimJob_BrokenCimSession, Get-ScheduledTask
Погуглил и осмотрелся ВЫГЛЯДИТ например, единственный способ разрешить учетной записи доступ к этому списку — добавить их в LocalAdmins на рассматриваемом сервере? Но на самом деле кажется неправильным создавать нашу учетную запись службы в качестве локального администратора, и, очевидно, мы не хотим, чтобы задача выполнялась под моей учетной записью администратора домена.
я пытался решение № 3 здесь, который звуки вроде бы так...
1. В качестве администратора сервера перейдите в «Диспетчер серверов» -> «Инструменты» -> «Управление компьютером». Слева разверните «Службы и приложения» и щелкните правой кнопкой мыши «Управление WMI». Перейдите в «Свойства».
2. В открывшемся окне перейдите на вкладку «Безопасность».
3. Разверните Корневое дерево, а затем щелкните узел CIMV2 и нажмите кнопку Безопасность
4. В открывшемся окне нажмите кнопку Дополнительно.
5. В новом открытом окне нажмите кнопку «Добавить» на вкладке разрешений.
6. В только что открытом окне нажмите «выбрать принципала», затем найдите пользователя, у которого возникла проблема.
7. В разделе «Применяется к» выберите «это пространство имен и подпространство имен».
8. Чтобы получить разрешение, проверьте «Выполнить методы», «Включить учетные записи» и «Удаленное включение».
9. Нажмите «Принять» во всех открытых диалоговых окнах.
10. Перезапустите службы WMI. В качестве администратора сервера перейдите в «Диспетчер серверов» -> «Инструменты» -> «Управление компьютером». Слева разверните «Службы и приложения» и нажмите «Службы». Перейдите в «Инструментарий управления Windows» и щелкните его правой кнопкой мыши. Затем выберите «Перезагрузить».
11. Повторите команду. Приведенные выше указания были адаптированы из этой публикации StackOverflow.
но даже после выполнения всех этих шагов это все равно не сработает.
Как я могу разрешить нашей учетной записи службы запрашивать (только для чтения) запланированные задачи с наших серверов, при этом максимально заботясь о безопасности?