Am un script PowerShell pe care l-am scris pentru a face o comparație a sarcinilor programate între două noduri ale clusterului nostru de server de aplicații. Folosește acest cod pentru a interoga sarcinile de la un anumit server...
funcția getTasks($server) {
returnează Get-ScheduledTask -CimSession $server |
Unde-Object TaskPath -cum ar fi „*OurFolder*” |
Pentru fiecare obiect {
[pscustomobject]@{
Server = $server
Cale = $_.TaskPath
Nume = $_.TaskName
Dezactivat = ($_.State -eq „Dezactivat”)
Comanda = $_.Actions.Execute
Argumente = $_.Actions.Arguments
Interval = $_.Triggers.RepetitionInterval
HashId = „$($_.Actions.Execute)|$($_.Actions.Arguments)”
HashFull = „$($_.TaskPath)|$($_.TaskName)|$($_.Actions.Execute)|$($_.Actions.Arguments)|$(($_.State -eq „Dezactivat) '))"
}
}
}
Funcționează perfect atunci când rulează sub contul meu de administrator al domeniului.
Cu toate acestea, când încerc să-l rulez sub contul nostru de serviciu ca sarcină programată, primește această eroare când încerc să interogă sarcinile programate pe celălalt nod...
Get-ScheduledTask : SERVER.domain.local: Nu se poate conecta la serverul CIM. Accesul este interzis.
La F:\Applications\TaskSchedulerNodeCompare\compare-nodes.ps1:9 char:12
+ returnează Get-ScheduledTask -CimSession $server |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: ResourceUnavailable: (MSFT_ScheduledTask:String) [Get-ScheduledTask], CimJobException
+ FullyQualifiedErrorId: CimJob_BrokenCimSession, Get-ScheduledTask
Caută pe Google și te uiți în jur APARATE ca singura modalitate de a permite unui cont să acceseze această listă ar fi să le adăugați la LocalAdmins de pe serverul în cauză? Dar într-adevăr nu se pare că trebuie să ne creăm contul de serviciu ca administrator local și, evident, nu dorim ca sarcina să fie executată sub contul meu de administrator al domeniului.
Am încercat solutia nr. 3 aici, care sunete parca ar fi asa...
1. În calitate de administrator al serverului, accesați Server Manager -> Tools -> Computer Management. În stânga, extindeți „Servicii și aplicații” și faceți clic dreapta pe „Control WMI”. Accesați „Proprietăți”.
2. În fereastra nou deschisă, faceți clic pe fila Securitate.
3. Extindeți arborele rădăcină, apoi faceți clic pe nodul CIMV2 și faceți clic pe butonul securitate
4. În fereastra nou deschisă, faceți clic pe butonul Avansat.
5. În fereastra nou deschisă, faceți clic pe butonul Adăugați sub fila de permisiuni.
6. În noua fereastră deschisă, faceți clic pe âselect a principal", apoi căutați utilizatorul care a avut problema.
7. În se aplică pentru, alegeți „acest spațiu de nume și subspațiu de nume”.
8. Pentru permisiune, bifați „Execute Methods”, „Enable Accounts” și „Remote Enable”
9. Faceți clic pe accept în toate casetele de dialog deschise
10. Reporniți serviciile WMI. În calitate de administrator al serverului, accesați Server Manager -> Tools -> Computer Management. În stânga, extindeți „Servicii și aplicații” și faceți clic pe „Servicii”. Accesați „Windows Management Instrumentation” și faceți clic dreapta pe el. Apoi alegeți „Reporniți”.
11. Încercați din nou comanda. Instrucțiunile de mai sus au fost adaptate din această postare StackOverflow.
dar chiar și după ce ai făcut toți acești pași, tot nu va funcționa.
Cum pot permite contului nostru de serviciu să interogheze (numai în citire) sarcinile programate de pe serverele noastre, fiind cât mai conștienți de securitate?