
У меня есть скрипт PowerShell, который я написал для сравнения запланированных задач между двумя узлами нашего кластера серверов приложений. Он использует этот код для запроса задач с заданного сервера...
function getTasks($server) {
return Get-ScheduledTask -CimSession $server |
Where-Object TaskPath -like '*OurFolder*' |
ForEach-Object {
[pscustomobject]@{
Server = $server
Path = $_.TaskPath
Name = $_.TaskName
Disabled = ($_.State -eq 'Disabled')
Command = $_.Actions.Execute
Arguments = $_.Actions.Arguments
Interval = $_.Triggers.RepetitionInterval
HashId = "$($_.Actions.Execute)|$($_.Actions.Arguments)"
HashFull = "$($_.TaskPath)|$($_.TaskName)|$($_.Actions.Execute)|$($_.Actions.Arguments)|$(($_.State -eq 'Disabled'))"
}
}
}
Работает отлично, если запустить его под учетной записью администратора домена.
Однако когда я пытаюсь запустить его под нашей учетной записью службы как запланированную задачу, возникает эта ошибка при попытке запросить запланированные задачи на другом узле...
Get-ScheduledTask : SERVER.domain.local: Cannot connect to CIM server. Access is denied.
At F:\Applications\TaskSchedulerNodeCompare\compare-nodes.ps1:9 char:12
+ return Get-ScheduledTask -CimSession $server |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (MSFT_ScheduledTask:String) [Get-ScheduledTask], CimJobException
+ FullyQualifiedErrorId : CimJob_BrokenCimSession,Get-ScheduledTask
Погуглил и посмотрел вокругВЗГЛЯДЫкак будто единственный способ разрешить учетной записи доступ к этому списку — добавить ее в LocalAdmins на соответствующем сервере? Но на самом деле кажется неправильным делать нашу учетную запись службы локальной, и, очевидно, мы не хотим, чтобы задача выполнялась под моей учетной записью администратора домена.
я пробовалрешение №3 здесь, которыйзвукикак будто это оно и есть...
1. As an Administrator of the server, go to Server Manager -> Tools -> Computer Management. On the left expand "Services and Applications" and right click "WMI Control". Go to "Properties".
2. In the newly open Window, click on Security tab.
3. Expand Root tree, and then click on the node CIMV2, and click the button security
4. In the newly open Window, click the button Advanced.
5. In the newly open Window, click the button Add under the permission tab.
6. In the newly open Window, click on “select a principal", then search for the user you that was having the problem.
7. In the applies to, choose “this namespace and subnamespace".
8. For the permission, check on “Execute Methods", “Enable Accounts" and “Remote Enable"
9. Click accept on all the open dialogue boxes
10. Restart WMI services. As an Admininstrator of the server, go to Server Manager -> Tools -> Computer Management. On the left expand "Services and Applications" and click on "Services". Go to "Windows Management Instrumentation" and right click it. Then choose "Restart".
11. Try the command again. The above directions were adapted from this StackOverflow posting.
Но даже после выполнения всех этих шагов это все равно не работает.
Как разрешить нашей учетной записи службы запрашивать (только чтение) запланированные задачи с наших серверов, соблюдая при этом максимальную безопасность?
решение1
Насколько я знаю, запланированные задачи могут видеть только создатели или члены локальной группы администраторов. Я также сомневаюсь, что какое-либо работающее решение будет охватывать задачи, созданные после изменения разрешений на локальные объекты или чего-то подобного.
Также посмотрите этот вопрос/ответ, который кажется очень похожим: Разрешения или ACL для запланированных задач