How to locate SCCM Collection Object based on the Collection ID

Often, I found it’s hard to locate the Collection object in the SCCM console if you only know the Collection ID. Couple of weeks ago I ran into a situation where I need to modify the settings of a bunch of collection objects and all I knew was the Collection ID. I wrote a script called Get-CollectionPath that identifies all possible paths to a particular collection (as a collection can be linked to multiple places). The Syntax is: .\Get-CollectionPath <SCCM Central Site Server Name> <Collection ID> Download the script here.

Hyper-V virtual machines with “Missing” status

I’m currently running Hyper-V R2 on a machine with 24GB of memory at home. It hosts most of my test machines such as SCCM, SCOM, Exchange, etc. System Center Virtual Machine Manager 2008 R2 (VMM) is installed on a separate box to manage this Hyper-V Host. Few days ago the Hyper-V machine was powered off unexpectly and when it powered back online, in VMM, the status of 2 virtual machines showed as “Missing”. I checked the location where virtual machines are stored and without doubt, the vhd, xml and other files for each virtual machine are still there. I Checked

Incorrect description in SCCM Report License 03B – Computers with a specific license status (Report ID 350)

On the SCCM Report “License 03B – Computers with a specific license status” (Report ID 350, category Asset Intelligence), the description states there are 5 possible values for license status: This is incorrect. SCCM collects licensing data from client’s WMI class SoftwareLicensingProduct in root\cimv2 namespace and regarding to below MSDN article, there are 7 possible values for LicenseStatus: http://msdn.microsoft.com/en-us/library/cc534596(VS.85).aspx Below is an example of a server with license status 5 showing up in the SCCM report:

Failed to run PowerShell script via Task Scheduler on a 64 bit Windows

I came across a situation the other day that on a Windows Server 2008 R2 box, when I created a Scheduled Task to run a Powershell script, it runs OK using “C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe” (64 bit PowerShell) but fails with error code (0x1) if I use “C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Powershell.exe” (32 bit Powershell) I have done the following steps to help me troubleshoot the issue. 1. I have changed the scheduled task to “Run only when user is logged on” so a command prompt was shown when the task runs. I screen captured the output: It looks like the PowerShell Execution Policy is preventing the

Get SCCM site roles using Powershell

You can run the following on the site server to find out the servers holding each SCCM role: $SMSProvider = get-wmiobject sms_providerlocation -namespace root\sms -filter “ProviderForLocalSite = True” $SiteCode = $SMSProvider.SiteCode $ProviderMachine = $SMSProvider.Machine get-wmiobject -Class SMS_SystemResourceList -NameSpace root\sms\site_$SiteCode -Computername $ProviderMachine | format-list RoleName,ServerRemoteName,SiteCode

Haven’t been able to blog lately

I haven’t been able to blog lately. I have started my new job as a SCCM specialist. I know this blog is mainly focusing SCCM, SCOM and Powershell and so far I have not posted anything SCCM related. So hopefully I will start posting more SCCM related topics.

Updated: Enhanced SCOM Alerts Notification Emails script

I have previously posted the Enhanced SCOM Alerts Notification email scripts back in July 2010. I’d like to thank everyone who have tested it and provided feedbacks. You made me aware there are few issues and bugs with the script. Since I have just resigned and my new job won’t start in few weeks time, I have spent the last couple of days updating the script. This is what I’ve done: 1. Removed GetNetbiosName function Few people advised there are often this function running into errors.  I realised I originally wrote this function because one of my previous employers required

PowerShell Function: Validate Subnet Mask

This is a function I wrote couple of days ago for the Windows Build Scripts which I blogged yesterday. I think it is pretty cool so I’d like to blog this function individually: It checks the following: – if subnet mask is in numeric and consists 4 sections separated by “.” – If each section is ranged between 0 and 255 – convert it to binary format and make sure it is a valid subnet mask (first part consists all “1”s and second part consists all “0”s). So here’s the usage: This function can be downloaded HERE

PowerShell: OS Build Script for Windows Server 2008, 2008 R2 and Windows 7

Background: Around 2 years ago, I originally written a set of script to configure newly built Windows 2008 servers using PowerShell when my previous employer started to deploy their very first Windows 2008 server. These set of scripts were the very first scripts I’ve ever written in PowerShell. Over the time, I have updated them many times and now they also support Windows 2008 R2 and Windows 7. You can download the scripts HERE. Purpose: This set of build script is designed to automate the process of building a Windows server (version 2008 and above). It is designed for environments

Mailbox Archive Tool for Microsoft Exchange Servers

This is another GUI tool based on PowerShell I’ve written in the past. A company I worked for needed a tool for Service Desk people to archive users’ mailboxes into PST file. I’m not an Exchange engineer, they told me they used to use ExMerge in Exchange 2003 environment but since upgraded to Exchange 2007,  they were no longer able to do so under a GUI interface because ExMerge was replaced by a PowerShell cmdlet “Export-MailBox”. So I wrote this mailbox archive tool. it basically archives a mailbox into a PST file (with the option to whether delete mailbox after

%d bloggers like this: