Я использую встроенные командлеты SCSM и модуль PowerShell SMlets. Я могу запрашивать запросы на обслуживание, но не могу понять, как получить затронутого пользователя данного запроса на обслуживание. Я получаю запросы на обслуживание следующим образом:
Import-Module SMlets -ErrorAction Stop
$SCSMclassSR = Get-SCSMClass -Name System.WorkItem.ServiceRequest
$SCSMobject = Get-SCSMObject -Class $SCSMclassSR
Если вы выберете любой заданный билет и запустите Get-Member
на нем вы можете просмотреть список свойств. Ни один из них не связан с Затронутым пользователем. Думая, что данные билета сохраняются вместе с объектом пользователя, я запустил следующий код:
$scsmuser = Get-SCSMObject -Class (get-scsmclass -name microsoft.ad.user) -filter "UserName -like <username>"
Ни одно из свойств там не соответствует ни одному билету (также запустите gm). Конечно, это могло быть невежеством с моей стороны, а метод производства билетов просто не назван и не описан.
Я пробовал смотреть на Исходный код SMlets чтобы почерпнуть некоторое представление, но я не разработчик C #, поэтому некоторые из них проносятся мне через голову. Я также пытался получить некоторое понимание и помощь со страницы msdn для EnterpriseManagementObject - класс, но безрезультатно.
Надеюсь, у этого есть действительно простое решение, и я просто над этим подумал. Но, как получить затронутого пользователя для билета SCSM с помощью PowerShell? Желательно билет запроса на обслуживание.
Я продолжал копать и нашел в Интернете сценарий, в котором кто-то хотел найти адреса электронной почты пользователей для инцидентов. Я подумал, что сначала им нужно будет найти пользователя (что даст мне AffectedUser), и был прав. Вот решение:
$SCSMclassSR = Get-SCSMClass -Name System.WorkItem.ServiceRequest
$SCSMobject = Get-SCSMObject -Class $SCSMclassSR
$affectedUserRelClass = Get-SCSMRelationshipClass System.WorkItemAffectedUser$
Foreach($SR in $SCSMobject){
$affectedUser = Get-SCSMRelatedObject -SMObject $SR -Relationship $AffectedUserRelClass
Add-Member -InputObject $SR -Name AffectedUser -Value $affectedUser.UserName -MemberType NoteProperty
}