ฉันมีสคริปต์ PowerShell ที่ฉันเขียนขึ้นเพื่อเปรียบเทียบงานตามกำหนดการระหว่างสองโหนดของคลัสเตอร์เซิร์ฟเวอร์แอปพลิเคชันของเรา มันใช้รหัสนี้เพื่อสอบถามงานจากเซิร์ฟเวอร์ที่กำหนด...
ฟังก์ชัน getTasks ($ เซิร์ฟเวอร์) {
ส่งคืน Get-ScheduledTask -CimSession $server |
Where-Object TaskPath -like '*YourFolder*' |
สำหรับแต่ละวัตถุ {
[pscustomobject]@{
เซิร์ฟเวอร์ = $เซิร์ฟเวอร์
เส้นทาง = $_.TaskPath
ชื่อ = $_.ชื่องาน
ปิดใช้งาน = ($_.State -eq 'ปิดใช้งาน')
คำสั่ง = $_.Actions.Execute
อาร์กิวเมนต์ = $_.Actions.Arguments
ช่วงเวลา = $_.Triggers.RepetitionInterval
HashId = "$($_.Actions.Execute)|$($_.Actions.Arguments)"
HashFull = "$($_.TaskPath)|$($_.TaskName)|$($_.Actions.Execute)|$($_.Actions.Arguments)|$(($_.State -eq 'ปิดการใช้งาน '))"
}
}
}
มันทำงานได้อย่างสมบูรณ์แบบเมื่อทำงานภายใต้บัญชีผู้ดูแลโดเมนของฉัน
อย่างไรก็ตาม เมื่อฉันพยายามเรียกใช้งานภายใต้บัญชีบริการของเราเป็นงานตามกำหนดเวลา มันได้รับข้อผิดพลาดนี้เมื่อพยายามสอบถามงานที่กำหนดเวลาไว้บนโหนดอื่น ...
Get-ScheduledTask : SERVER.domain.local: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ CIM การเข้าถึงถูกปฏิเสธ.
ที่ F:\Applications\TaskSchedulerNodeCompare\compare-nodes.ps1:9 char:12
+ ส่งคืน Get-ScheduledTask -CimSession $server |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (MSFT_ScheduledTask:String) [Get-ScheduledTask], CimJobException
+ FullyQualifiedErrorId : CimJob_BrokenCimSession, Get-ScheduledTask
Googling และมองไปรอบ ๆ ดู เช่นเดียวกับวิธีเดียวที่จะอนุญาตให้บัญชีเข้าถึงรายการนี้ได้คือการเพิ่มไปยัง LocalAdmins บนเซิร์ฟเวอร์ที่เป็นปัญหา แต่รู้สึกไม่ถูกต้องที่จะต้องทำให้บัญชีบริการของเราเป็นผู้ดูแลระบบภายใน และแน่นอนว่าเราไม่ต้องการให้งานทำงานภายใต้บัญชีผู้ดูแลระบบโดเมนของฉัน
ฉันพยายามแล้ว หมายเลขโซลูชั่น 3 ที่นี่, ที่ เสียง เหมือนจะเป็น...
1. ในฐานะผู้ดูแลเซิร์ฟเวอร์ ให้ไปที่ Server Manager -> Tools -> Computer Management ทางด้านซ้ายให้ขยาย "บริการและแอปพลิเคชัน" และคลิกขวาที่ "การควบคุม WMI" ไปที่ "คุณสมบัติ"
2. ในหน้าต่างที่เพิ่งเปิดใหม่ คลิกที่แท็บ Security
3. ขยาย Root tree จากนั้นคลิกที่โหนด CIMV2 แล้วคลิกปุ่ม ความปลอดภัย
4. ในหน้าต่างที่เพิ่งเปิดใหม่ให้คลิกปุ่ม ขั้นสูง
5. ในหน้าต่างที่เพิ่งเปิดใหม่ ให้คลิกปุ่ม เพิ่ม ใต้แท็บการอนุญาต
6. ในหน้าต่างที่เพิ่งเปิดใหม่ ให้คลิกที่ âselect a master" จากนั้นค้นหาผู้ใช้ที่คุณประสบปัญหา
7. ในใช้กับ ให้เลือก âเนมสเปซนี้และเนมสเปซย่อย"
8. สำหรับการอนุญาต ตรวจสอบที่ âExecute Methods, âEnable Accounts" and âRemote Enable"
9. คลิกยอมรับในกล่องโต้ตอบที่เปิดอยู่ทั้งหมด
10. เริ่มบริการ WMI ใหม่ ในฐานะผู้ดูแลเซิร์ฟเวอร์ ให้ไปที่ Server Manager -> Tools -> Computer Management ทางด้านซ้ายให้ขยาย "บริการและแอปพลิเคชัน" และคลิกที่ "บริการ" ไปที่ "Windows Management Instrumentation" แล้วคลิกขวา จากนั้นเลือก "รีสตาร์ท"
11. ลองคำสั่งอีกครั้ง คำแนะนำข้างต้นได้รับการดัดแปลงจากการโพสต์ StackOverflow นี้
แต่แม้จะทำตามขั้นตอนทั้งหมดแล้วก็ยังใช้งานไม่ได้
ฉันจะอนุญาตให้บัญชีบริการของเราค้นหา (อ่านอย่างเดียว) งานที่จัดกำหนดการจากเซิร์ฟเวอร์ของเราโดยคำนึงถึงความปลอดภัยให้มากที่สุดได้อย่างไร