Permisos de cuenta de servicio para el Programador de tareas LEER

Permisos de cuenta de servicio para el Programador de tareas LEER

Tengo un script de PowerShell que escribí para hacer una comparación de tareas programadas entre dos nodos de nuestro clúster de servidores de aplicaciones. Utiliza este código para consultar las tareas de un servidor determinado...

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'))"
            }
        }
}

Funciona perfecto cuando se ejecuta con mi cuenta de administrador de dominio.

Sin embargo, cuando intento ejecutarlo en nuestra cuenta de servicio como una tarea programada, aparece este error al intentar consultar las tareas programadas en el otro nodo...

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

Googleando y mirando a su alrededorASPECTO¿Le gustaría que la única forma de permitir que una cuenta acceda a esta lista sería agregarla a LocalAdmins en el servidor en cuestión? Pero realmente no me parece correcto tener que crear nuestra cuenta de servicio como administrador local y, obviamente, no queremos que la tarea se ejecute en mi cuenta de administrador de dominio.

He intentadosolución no. 3 aquí, cualsonidoscomo si fuera así...

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.

pero incluso después de realizar todos esos pasos, todavía no funcionará.

¿Cómo puedo permitir que nuestra cuenta de servicio consulte (solo lectura) las tareas programadas desde nuestros servidores, siendo lo más consciente posible de la seguridad?

Respuesta1

Por lo que sé, las tareas programadas solo pueden ser vistas por el creador o por un miembro del grupo de administración local. También dudo que alguna solución funcional cubra las tareas creadas después de cambiar los permisos en objetos locales o algo similar.

Además, vea esta pregunta/respuesta que parece muy similar: Permisos o ACL para tareas programadas

información relacionada