我正在使用内置的 SCSM cmdlet 和 SMlets powershell 模块。我能够查询服务请求,但似乎无法弄清楚如何获取给定服务请求的受影响用户。我以以下方式获取服务请求:
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 类,但无济于事。
希望有一个非常简单的解决方案,我只是多想了。但是,如何使用 powershell 获取受影响用户的 SCSM 票证? 最好是服务请求票。
答案1
我继续挖掘,在网上找到了一个脚本,有人想在其中查找事件的用户电子邮件地址。我认为他们必须先找到用户(这会给我 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
}