Install SCOM agent without the GUI?

SCOM can be a bit of a bear to the newcomer, there are several components that are quirky at best and if its not set up correctly or if you don’t know what you are doing things could go awry very quickly. Thank goodness there is a plethora of PowerShell commandlets for SCOM management and install to make things easier for us.
On the SCOM management server I experimented with the Install-SCOMAgent commandlet, what I found was that with the right parameters I could very quickly install the agent on remote servers with very little input. Lets look at this one liner that installs the SCOM agent on FileServer1 without the need to launch the SCOM console and run the discovery wizard:

Install-SCOMAgent -DNSHostName FileServer1.Domain.com -PrimaryManagementServer SCOM1.Domain.com

Just like that the agent installs immediately on FileServer1, no need to wait, no wizard to run, no hassle.

But wait… what if I didn’t have to log onto the SCOM server at all to install the client? Below is a simple function I created which allows you to install the SCOM agent from your desktop using PSRemoting, the only thing you need to know is the name of the SCOM server, and the target server name.

Function Install-SCOMClient{            
Param ([string]$Computer,            
    [String]$SCOMServer)            
    $RMSSession = New-PSSession –ComputerName $SCOMServer ;             
    Invoke-Command -Session $RMSsession -ScriptBlock {Add-PSSnapin “Microsoft.EnterpriseManagement.OperationsManager.Client”} ;             
    Invoke-Command -Session $RMSsession -ScriptBlock {Install-SCOMAgent -DNSHostName ($args[0] + '.' + $env:USERDNSDOMAIN) -PrimaryManagementServer (Get-SCOMManagementServer) -Verbose} -ArgumentList $computer;            
    Remove-PSSession $RMSSession            
    }
Install-SCOMClient -Computer FileServer1 -SCOMServer SCOM01

It’s one I like to put into my $Profile so its easily accessible to me on my client desktop.