select COL.Name from SMS_Collection as COL JOIN SMS_FullCollectionMembership as COLMEM on COL.CollectionID = COLMEM.CollectionID where COLMEM.Name = ##PRM:SMS_FullCollectionMembership.Name## order by COL.NameYou can use this query within SCCM solely as a Query or as a collection membership query. For SQL queries and reports take a look here
Monday, December 18, 2017
SCCM: Query collection membership for specific system
Beneath you find a WQL query for listing all collection memberships for a specific system in SCCM
I got some examples of the internet which didn't work for me. This query does and uses a prompt asking for a system resource name.
Labels:
Collections,
SCCM,
WQL
Thursday, December 14, 2017
PowerShell: Encapsulate 64 bit cmdlet in a 32 bit context
Found a rather old but nice tip from Neil Peterson to tackle a challenge executing Powershell 64 bit cmdlets from a 32 bit execution context (Orchestrator in his example).
Just wanted to share this and add it to my own blog for enhancing my toolbox.
#living in a 32 bit universe
#starting PowerShell 'sysnative' version and thus 64 bit
#more info: https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx
$ClusterNodes = .$env:windir\sysnative\WindowsPowerShell\v1.0\powershell.exe {
#living in a 64 bit universe
Get-ClusterNode -Cluster clustername
}
Labels:
Code,
Orchestrator,
PowerShell
Monday, July 3, 2017
SCOM: Using [bracket] NoteProperties in PowerShell
What are those brackets [] in PowerShell!!??
When you query class instances, you'll see a numer of properties available of the type 'NoteProperty'. Direct or inherited from parent classes. To use or filter on these class instance properties in PowerShell, you need to use a specific syntax.
You either enclose with single quotes or escape with backtick. In this example i'm using an instance of the 'Windows Server' class from one of the default SCOM management packs. This class inherits the property 'IPAddress' from the base class 'Windows Computer'.
Here are the useable options for PowerShell:
You either enclose with single quotes or escape with backtick. In this example i'm using an instance of the 'Windows Server' class from one of the default SCOM management packs. This class inherits the property 'IPAddress' from the base class 'Windows Computer'.
Here are the useable options for PowerShell:
#Get all available properties
Get-SCOMClass -DisplayName "Windows Server" | Get-SCOMClassInstance | Get-Member
...
[Microsoft.Windows.Computer].ActiveDirectoryObjectSid
[Microsoft.Windows.Computer].ActiveDirectorySite
[Microsoft.Windows.Computer].DNSName
[Microsoft.Windows.Computer].DomainDnsName
[Microsoft.Windows.Computer].ForestDnsName
[Microsoft.Windows.Computer].HostServerName
[Microsoft.Windows.Computer].IPAddress
[Microsoft.Windows.Computer].IsVirtualMachine
[Microsoft.Windows.Computer].LastInventoryDate
[Microsoft.Windows.Computer].LogicalProcessors
[Microsoft.Windows.Computer].NetbiosComputerName
[Microsoft.Windows.Computer].NetbiosDomainName
[Microsoft.Windows.Computer].NetworkName
[Microsoft.Windows.Computer].OffsetInMinuteFromGreenwichTime
[Microsoft.Windows.Computer].OrganizationalUnit
[Microsoft.Windows.Computer].PhysicalProcessors
[Microsoft.Windows.Computer].PrincipalName
[Microsoft.Windows.Computer].VirtualMachineName
...
#
# Using a NoteProperty
# ** Where-Object / ForEach-Object clause **
{ $_.'[Microsoft.Windows.Computer].IPAddress'.Value }
# ** Select-Object **
Select-Object ``[Microsoft.Windows.Computer`].IPAddress
Select-Object *.IPAddress
# ** Change column name or object property name **
# Looks like the syntax for Where-Object, but 'Value' subproperty is not specified!
Select-Object @{Expression={$_.'[Microsoft.Windows.Computer].IPAddress'};Label="IP"}
Labels:
NoteProperty,
PowerShell,
SCOM,
Syntax
Wednesday, September 28, 2016
SCCM: Using Cmdlets from SCCM PowerShell Module
If you want to use PowerShell with SCCM, you can do two things.
You can verify this with the command Get-PSDrive command
When the CMSite PowerShell Drive is not available, you can create it yourself and connect to the SCCM site. The only parameter you need is the name of the Site Server which hosts the SMS Provider. This is usually the Primary Site Server.
How to add the CMSite PSDrive manually:
More info:
http://www.hasmug.com/2016/04/25/easily-document-configmgr-client-settings-with-powershell/ (thanks for the csv function!)
http://www.verboon.info/2013/05/powershell-script-to-retrieve-sccm-2012-client-settings/
https://blogs.technet.microsoft.com/enterprisemobility/2013/03/27/powershell-connecting-to-configuration-manager/
- Load the PowerShell through the SCCM Console (left top corner: Connect via Windows PowerShell)
- Load the PowerShell module manually
import-module($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1')
You can verify this with the command Get-PSDrive command
Get-PSDrive -PSProvider CMSite
When the CMSite PowerShell Drive is not available, you can create it yourself and connect to the SCCM site. The only parameter you need is the name of the Site Server which hosts the SMS Provider. This is usually the Primary Site Server.
How to add the CMSite PSDrive manually:
New-PSDrive -Name "SCCM" -PSProvider CMSite -Root "<SCCM_SERVER>" cd SCCM:Of course you can use whatever name you want.
More info:
http://www.hasmug.com/2016/04/25/easily-document-configmgr-client-settings-with-powershell/ (thanks for the csv function!)
http://www.verboon.info/2013/05/powershell-script-to-retrieve-sccm-2012-client-settings/
https://blogs.technet.microsoft.com/enterprisemobility/2013/03/27/powershell-connecting-to-configuration-manager/
Labels:
Module,
PowerShell,
SCCM
Monday, May 30, 2016
SCOM: View Folder Path hierarchy (PowerShell)
So we're six years older and still there was a small thing that I still had not fixed.
It concerned the full view folder path of a SCOM Monitoring View.
In the past I wrote numerous PowerShell scripts which involved the views. Now I finally found some time to create a function to get the folder hierarchy of a given View by it's ID (guid).
Why I never thought about solving it like this, i don't know, but it appeared to be not that hard. It's a simple recursive function.
In the future I'll update the existing scripts concerning the User Scopes and will also upload a nice script which shows a complete report about all the dependancies between Management Packs and their objects used in User Roles and Notifications. This comes in handy, when you want to phase out management packs but don't know whether there are User Roles and Notification Subscriptions involved.
Enjoy.
In the past I wrote numerous PowerShell scripts which involved the views. Now I finally found some time to create a function to get the folder hierarchy of a given View by it's ID (guid).
Why I never thought about solving it like this, i don't know, but it appeared to be not that hard. It's a simple recursive function.
In the future I'll update the existing scripts concerning the User Scopes and will also upload a nice script which shows a complete report about all the dependancies between Management Packs and their objects used in User Roles and Notifications. This comes in handy, when you want to phase out management packs but don't know whether there are User Roles and Notification Subscriptions involved.
Enjoy.
- $computerName should have a name of a valid Management Server
- $viewId needs to have a valid guid of an existing view in your SCOM environment.
New-SCOMManagementGroupConnection -ComputerName $computerName
$mg = Get-SCOMManagementGroup
function GetFolderHierarchy($folderId,$folderpath) {
$parentfolderid = $null
$tmpfolder = $mg.GetMonitoringFolder($folderId)
$tmpfolderdisplayname = $tmpfolder.DisplayName
if ($folderpath -eq "" -Or $folderpath -eq $null) {
$folderpath = $tmpfolderdisplayname
} else {
$folderpath = $tmpfolderdisplayname + "\" + $folderpath
}
$parentfolderid = $tmpfolder.ParentFolder.id.Guid
if ($parentfolderid -ne "" -And $parentfolderid -ne $null -And $tmpfolder.name -ne "Microsoft.SystemCenter.Monitoring.ViewFolder.Root") {
GetFolderHierarchy $parentfolderid $folderpath
} else {
return $folderpath
}
}
function GetViewHierarchy($viewId) {
$tmpview = $mg.GetMonitoringView($viewId)
$parentfolderid = $tmpview.ParentFolderIds.Guid | Select -First 1
if($parentfolderid -ne "" -And $parentfolderid -ne $null) {
$fullpath = GetFolderHierarchy $parentfolderid
return $fullpath + "\" + $tmpview.DisplayName
}
}
GetViewHierarchy $viewId
Labels:
Automation,
Code,
PowerShell,
SCOM,
User Role,
Views
Wednesday, March 23, 2016
SCOM: Compare MP's between Management Groups with PowerShell
A short blog post about comparing management packs between SCOM environments
I know there are tools available to compare management packs, but that's no fun.
Creating this compare script with PowerShell to accomplish the same didn't cost me that much time.
And of course, doing it yourself with PowerShell is just more fun.
So here it is.
This script gives you a gridview with the differences, as well as an CSV output file.
Screenshots:
This script gives you a gridview with the differences, as well as an CSV output file.
#Compares unsealed/sealed MP's between two management groups
#Author: Michiel Wouters
#Date: 23-03-2016
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$ms1="server1", # A management server of the source environment, default value
[Parameter(Mandatory=$False)]
[string]$ms2="server2", # A management server of the target environment, default value
[Parameter(Mandatory=$False)]
[boolean]$Sealed=$True
)
New-SCOMManagementGroupConnection -ComputerName $ms1
$mmgtgrpconn1 = Get-SCOMManagementGroupConnection -ComputerName $ms1
New-SCOMManagementGroupConnection -ComputerName $ms2
$mmgtgrpconn2 = Get-SCOMManagementGroupConnection -ComputerName $ms2
Set-SCOMManagementGroupConnection -Connection $mmgtgrpconn1
$mgmtgrp1mps = Get-SCOMManagementPack | ? {$_.Sealed -eq $Sealed} | Select DisplayName, Name, Version | Sort DisplayName
Set-SCOMManagementGroupConnection -Connection $mmgtgrpconn2
$mgmtgrp2mps = Get-SCOMManagementPack | ? {$_.Sealed -eq $Sealed} | Select DisplayName, Name, Version | Sort DisplayName
#set SynWindow for compare object
if($mgmtgrp2mps.Count -gt $mgmtgrp1mps.count) {
$SyncWindow = [math]::Ceiling($mgmtgrp2mps.Count/2)
} else {
$SyncWindow = [math]::Ceiling($mgmtgrp1mps.Count/2)
}
$comparison = Compare-Object -ReferenceObject $mgmtgrp1mps -DifferenceObject $mgmtgrp2mps -Property DisplayName, Name, Version -SyncWindow $SyncWindow | Sort DisplayName
#output to screen
$comparison | Out-GridView
#output to csv file
$comparison | Export-CSV -Path .\SCOM_MPDiff_$(Get-Date -Format "yyyyMMdd_HHmm").csv -NoTypeInformation -Delimiter ";"
Screenshots:
Labels:
Management packs,
PowerShell,
SCOM,
SCOM 2012
Wednesday, January 27, 2016
SCOM: SCOM 2016 Monitoring Wishes
I noticed on the System Center: Operations Monitoring Engineering Blog that there's a request for which monitoring workloads you would like to see in SCOM 2016.
So this is your chance:
http://blogs.technet.com/b/momteam/archive/2016/01/22/what-new-workloads-would-you-like-scom-2016-to-monitor.aspx
For myself, I really would like to see more effort to let end-users do more Authoring for themselves, instead of being fully dependant on the Authoring team within organizations.
As for workloads: Enhanced user experience monitoring would be nice and also more functional monitoring workloads would be a nice addon (like querying specific data in a DB) and write that data back for performance history and reporting.
So this is your chance:
http://blogs.technet.com/b/momteam/archive/2016/01/22/what-new-workloads-would-you-like-scom-2016-to-monitor.aspx
For myself, I really would like to see more effort to let end-users do more Authoring for themselves, instead of being fully dependant on the Authoring team within organizations.
As for workloads: Enhanced user experience monitoring would be nice and also more functional monitoring workloads would be a nice addon (like querying specific data in a DB) and write that data back for performance history and reporting.
Wednesday, February 25, 2015
SCOM: New version available MP Author SP3
Silect just released a new version, SP3, of MP Author, a free and easy to use tool for creating SCOM management pack.
Check it out: http://www.silect.com/mp-author
Soms welcome new features:
- Improved knowledge viewing and editing in multiple language environments
- Improved XML editing
- New feature to "Check for missing display names" (Nice one when MP's are authored by multiple users with different UI locales)
- Added ability to use base classes other than LocalApplication when creating new classes
- Additional MP elements are displayed
- Added a drop down list of $$ parameters for alert messages (less Traffic for Kevin Holman's blog ;))
- Schedule property grid made more user friendly
- Improvements to memory usage
- Improved knowledge viewing and editing in multiple language environments
- Improved XML editing
- New feature to "Check for missing display names" (Nice one when MP's are authored by multiple users with different UI locales)
- Added ability to use base classes other than LocalApplication when creating new classes
- Additional MP elements are displayed
- Added a drop down list of $$ parameters for alert messages (less Traffic for Kevin Holman's blog ;))
- Schedule property grid made more user friendly
- Improvements to memory usage
But, the use of notepad, XML editor and Authoring Console still comes in handy. Or use the Visual Studio addins for authoring.
Subscribe to:
Posts (Atom)


