3

所以我有一个名为 $monitors 的数组。我认为它包含的内容并不重要,但它是一个 SCOM 监视器列表,由以下两行创建:

Start-OperationsManagerClientShell -ManagementServerName: "your-mgmt-server" -PersistConnection: $false -Interactive: $false;
$monitors = Get-SCOMMonitor | Where-Object -Property XmlTag -eq "UnitMonitor"

输出这个数组,它的成员似乎有两个属性,称为 Overridden 和 Target(一直向右滚动):

PS D:\Daniel> $monitors

Enabled                DisplayName                                                                 ParentMonitorID                       Overri Target                                        
                                                                                                                                         dden                                                 
-------                -----------                                                                 ---------------                       ------ ------                                        
true                   Database Performance (rollup)                                               ManagementPackElementUniqueIdentif... True   SQL Server 2005 DB Engine                     
true                   File Share Shadow Copy Availability                                         ManagementPackElementUniqueIdentif... False  File Server VSS Agent Service (Windows Serv...
true                   Server Role hosts User Service Category - Configuration                     ManagementPackElementUniqueIdentif... False  Server Role                                   
false                  Delt-Astraia License Monitor                                                ManagementPackElementUniqueIdentif... False  Windows Server                                
true                   DB Memory-Optimized Data Filegroup Space (rollup)                           ManagementPackElementUniqueIdentif... True   SQL Server 2016 DB    

但根据Get-Member,“覆盖”不存在:

PS D:\Daniel> $monitors | gm


   TypeName: Microsoft.EnterpriseManagement.Configuration.ManagementPackUnitMonitor

Name                       MemberType Definition                                                                                                                                              
----                       ---------- ----------                                                                                                                                              
CheckVersionCompatibility  Method     System.Collections.Generic.IList[Microsoft.EnterpriseManagement.Configuration.Verification.ManagementPackVerificationResult] CheckVersionCompatibilit...
CreateNavigator            Method     System.Xml.XPath.XPathNavigator CreateNavigator(), System.Xml.XPath.XPathNavigator IXPathNavigable.CreateNavigator()                                    
Equals                     Method     bool Equals(System.Object obj)                                                                                                                          
GetCategories              Method     System.Collections.Generic.IList[Microsoft.EnterpriseManagement.Configuration.ManagementPackCategory] GetCategories()                                   
GetDisplayString           Method     Microsoft.EnterpriseManagement.Configuration.ManagementPackDisplayString GetDisplayString(cultureinfo culture), Microsoft.EnterpriseManagement.Config...
GetFolders                 Method     Microsoft.EnterpriseManagement.Configuration.ManagementPackElementCollection[Microsoft.EnterpriseManagement.Configuration.ManagementPackFolder] GetFo...
GetHashCode                Method     int GetHashCode()                                                                                                                                       
GetImageReferences         Method     System.Collections.Generic.IEnumerable[Microsoft.EnterpriseManagement.Configuration.ManagementPackImageReference] GetImageReferences()                  
GetKnowledgeArticle        Method     Microsoft.EnterpriseManagement.Configuration.ManagementPackKnowledgeArticle GetKnowledgeArticle(cultureinfo culture), Microsoft.EnterpriseManagement....
GetManagementPack          Method     Microsoft.EnterpriseManagement.Configuration.ManagementPack GetManagementPack()                                                                         
GetOverrideableParameters  Method     System.Collections.Generic.IList[Microsoft.EnterpriseManagement.Configuration.ManagementPackOverrideableParameter] GetOverrideableParameters()          
GetType                    Method     type GetType()                                                                                                                                          
Reconnect                  Method     void Reconnect(Microsoft.EnterpriseManagement.Configuration.ManagementPack mp), void Reconnect(Microsoft.EnterpriseManagement.EnterpriseManagementGro...
ToString                   Method     string ToString()                                                                                                                                       
Verify                     Method     System.Collections.Generic.IList[Microsoft.EnterpriseManagement.Configuration.Verification.ManagementPackVerificationResult] Verify(Microsoft.Enterpr...
WriteXml                   Method     void WriteXml(System.Xml.XmlWriter writer)                                                                                                              
Accessibility              Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackAccessibility Accessibility {get;set;}                                                       
AlertSettings              Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorAlertSettings AlertSettings {get;set;}                                                
Category                   Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackCategoryType Category {get;set;}                                                             
Comment                    Property   string Comment {get;set;}                                                                                                                               
Configuration              Property   string Configuration {get;set;}                                                                                                                         
ConfirmDelivery            Property   bool ConfirmDelivery {get;set;}                                                                                                                         
Description                Property   string Description {get;set;}                                                                                                                           
DisplayName                Property   string DisplayName {get;set;}                                                                                                                           
Enabled                    Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitoringLevel Enabled {get;set;}                                                           
HasNonCategoryOverride     Property   bool HasNonCategoryOverride {get;}                                                                                                                      
Id                         Property   guid Id {get;}                                                                                                                                          
Identifier                 Property   Microsoft.EnterpriseManagement.Configuration.ExtensionIdentifier Identifier {get;}                                                                      
InstanceName               Property   string InstanceName {get;set;}                                                                                                                          
LanguageCode               Property   string LanguageCode {get;set;}                                                                                                                          
LastModified               Property   datetime LastModified {get;set;}                                                                                                                        
ManagementGroup            Property   Microsoft.EnterpriseManagement.EnterpriseManagementGroup ManagementGroup {get;}                                                                         
ManagementGroupId          Property   guid ManagementGroupId {get;}                                                                                                                           
Name                       Property   string Name {get;}                                                                                                                                      
OperationalStateCollection Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackSubElementCollection[Microsoft.EnterpriseManagement.Configuration.ManagementPackUnitMonito...
ParentMonitorID            Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference[Microsoft.EnterpriseManagement.Configuration.ManagementPackAggregateMonit...
Priority                   Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackWorkflowPriority Priority {get;set;}                                                         
Remotable                  Property   bool Remotable {get;set;}                                                                                                                               
RunAs                      Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference[Microsoft.EnterpriseManagement.Configuration.ManagementPackSecureReferenc...
Status                     Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackElementStatus Status {get;set;}                                                              
Target                     Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass] Target ...
TimeAdded                  Property   datetime TimeAdded {get;set;}                                                                                                                           
TypeID                     Property   Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference[Microsoft.EnterpriseManagement.Configuration.ManagementPackUnitMonitorTyp...
XmlTag                     Property   string XmlTag {get;}                                                                                                                                    

Target 属性确实存在,但如果我尝试使用以下方式打印它,它的值会完全不同Format-Table

PS D:\Daniel> $monitors | Format-Table Target

Target                                                                                                                                                                                        
------                                                                                                                                                                                        
ManagementPackElementUniqueIdentifier=e817d034-02e8-294c-3509-01ca25481689                                                                                                                    
ManagementPackElementUniqueIdentifier=0302db52-58b0-43ff-65fe-0b492a1461ae                                                                                                                    
ManagementPackElementUniqueIdentifier=979b9385-5195-5be8-ce28-1467a6323c36                                                                                                                    
ManagementPackElementUniqueIdentifier=2d34f1de-ce5d-9a5d-bce1-67b75619d3a6                                                                                                                    

扩展属性仍然没有显示我们之前看到的值:

PS D:\Daniel> $monitors | Select-Object -ExpandProperty Target | Format-List *


Name       : 
Id         : e817d034-02e8-294c-3509-01ca25481689
Identifier : 1|Microsoft.Windows.Library/31bf3856ad364e35|1.0.0.0|Microsoft.Windows.Server.Computer||

Name       : 
Id         : 0302db52-58b0-43ff-65fe-0b492a1461ae
Identifier : 1|Microsoft.Windows.2016.Cluster.Management.Library/31bf3856ad364e35|1.0.0.0|Microsoft.Windows.10.0.Cluster.NetworkInterface||

Name       : 
Id         : 979b9385-5195-5be8-ce28-1467a6323c36
Identifier : 1|Microsoft.Windows.InternetInformationServices.2000/31bf3856ad364e35|1.0.0.0|Microsoft.Windows.InternetInformationServices.2000.FTPSite||

如何访问 Target 和 Overridden 参数,以便对它们进行排序、将它们导出为 CSV 等?

4

1 回答 1

1

这是查找用于测试连接的格式文件的快速示例。

$a = test-connection arc001 -Count 1
$a | gm | findstr /i typename
   TypeName: System.Management.ManagementObject#root\cimv2\Win32_PingStatus
ls -r $pshome\*.format.ps1xml | select-string Win32_PingStatus

DotNetTypes.format.ps1xml:1409:      <Name>System.Management.ManagementObject#root\cimv2\Win32_PingStatus</Name>
DotNetTypes.format.ps1xml:1411:         <TypeName>System.Management.ManagementObject#root\cimv2\Win32_PingStatus</TypeName>
DotNetTypes.format.ps1xml:1467:        <Name>Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_PingStatus</Name>
DotNetTypes.format.ps1xml:1469:          <TypeName>Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_PingStatus</TypeName>
于 2019-07-30T16:28:51.953 回答