We are happy to release several cross platform-specific PowerShell scripts to help automate the discovery of UNIX/Linux servers, installation and upgrade of the cross platform agents for Operations Manager 2007 R2, signing of the certificates, and changing the Management Server managing the UNIX/Linux server.
Four PowerShell scripts are currently available:

  • ChangeUnixIsManagedBy.ps1
  • DiscoverUnixAgent.ps1
  • InstallUnixAgent.ps1
  • UpgradeUnixAgent.ps1 
Each of these scripts is covered in this article, and help for each of these scripts is available by running the script without any parameters.


These four scripts leverage several helper scripts, which do not perform any actions on their own (and return no output if run on their own):

  • ChangeUnixIsManagedByImpl.ps1
  • DiscoverUnixAgentImpl.ps1
  • InstallUnixAgentImpl.ps1
  • scx.ps1
  • UpgradeUnixAgentImpl.ps1

The .zip file attached contains the files noted above.
Note: All of these scripts require PowerShell to be installed and are run from a Windows computer (not from a UNIX/Linux client computer).

ChangeUnixIsManagedBy.ps1 The ChangeUnixIsManagedBy script is used to change the current management server monitoring a UNIX/Linux server (or group of UNIX/Linux servers) to a new server as specified in the command line parameters.
The script accepts a list of Unix/Linux hosts on the input pipe.  These hosts are represented either as strings with fully qualified domain names (FQDN) or as objects with a «ComputerName» string property with the FQDN.
The output of the script is a list of objects with a «ComputerName» string property with the FQDN of the Unix/Linux host and a «Status» property with the status of the operation for the current host.
The following parameters can be used with the ChangeUnixIsManagedBy script:

Parameter Definition
RootManagementServer Name of OpsMgr root management server to use or empty string to use current computer (default)
ManagementServer Management Server to assign (required)
Target Additional computer to change management server for (done before any hosts are piped into script)

Usage:

ChangeUnixIsManagedBy.ps1-RootManagmentServer: -ManagementServer:
-Target:

Examples:
You have a Linux computer named SLES10-1.contoso.com and you want to change its Management Server to ContosoMS2.contoso.com, so you would use the following command:

ChangeUnixIsManagedBy.ps1 -ManagementServer:ContosoMS2.contoso.com
-Target:SLES10-1.contoso.com

Note: The script can also be executed without the parameter names, but only if all the parameters are provided. For example:

ChangeUnixIsManagedBy.ps1 ContosoRMS.contoso.com ContosoMS2.contoso.com
SLES10-1.contoso.com
InstallUnixAgent.ps1

The InstallUnixAgent script is used to deploy and install the Operations Manager Cross Platform Agent on the UNIX/Linux server(s). Running this script will first deploy the agent to the specified UNIX/Linux server and then install it. The script accepts a list of UNIX/Linux hosts on the input pipe. The hosts are represented either as strings with fully qualified domain names (FQDN) or as objects with a «ComputerName» string property with the FQDN.
The output of the script is a list of objects with a «ComputerName» string property added/changed to contain the FQDN of the Unix/Linux host and a «Status» property added/changed to contain the status of the operation for the current host. All status strings except ‘OK’ are an error message.
The following parameters can be used with the InstallUnixAgent script:

Parameter Definition
Port Port to connect to at remote host (default is 22)
RootManagementServer Name of OpsMgr root management server to use, or empty string to use current computer (default)
Username User name to use for connecting to remote host (required)
Password Password for specified username (required)
PackageName Name of package to install (required, name of package file)
PackagePath Full path (on the Operations Manager server) to package being installed (required, name of folder with package file)
Distro Distribution or OS name (required, one of AIX, HPUX, Solaris, RHEL or SLES)
Version OS version of the remote host (required, one of 11iv2, 11iv3, 4, 5, 5.3, 6.1, 8, 9, 10, 11)
Architecture OS architecture of the remote host (required, one of Powerpc, IA64, PARISC, SPARC, x86 or x64)
Target Additional remote computer targeted for install (done before any hosts piped into script)

Usage:

InstallUnixAgent.ps1-Port:RootManagmentServer:
-Username: -Password: -PackageName:
-PackagePath: -Distro: -Version:
-Architecture: -Target:

Example:
To deploy and install the x86 version of the SUSE Linux Enterprise Server 10 (SLES) Agent to the computer named SLES10-1.contoso.com, the following would be used:

InstallUnixAgent.ps1 -Username:root -Password:password -PackageName:scx-1.0.4-248.sles.10.x86.rpm -PackagePath:”C:\Program Files\System Center Operations Manager 2007\AgentManagement\UnixAgents” -Distro:SLES –Version:10 -Architecture:x86
-Target:SLES10-1.contoso.com

Note: The script can also be executed without the parameter names, but all the parameters must be provided.
UpgradeUnixAgent.ps1 The UpgradeUnixAgent script is used to upgrade an existing Operations Manager Cross Platform Agent on a UNIX/Linux server.  This is done by first deploying the updated agent to the remote UNIX/Linux server and then installing it (upgrading).
Usage:

UpgradeUnixAgent.ps1-Port:RootManagmentServer:
-Username: -Password: -PackageName:
-PackagePath: -Distro: -Version:
-Architecture: -Target:

Example:
To upgrade an existing SLES agent to a new version (e.g., version 1.0.4-252), you would use the following command:

UpgradeUnixAgent.ps1 -Username:root -Password:password -PackageName: scx-1.0.4-252.sles.10.x86.rpm -PackagePath:”C:\Program Files\System Center Operations Manager 2007\AgentManagement\UnixAgents” –Distro:SLES –Version:10 –Architecture:x86
–Target: SLES10-1.contoso.com
DiscoverUnixAgent.ps1

The DiscoverUnixAgent script is used to sign the certificate used for communication and discovering an instance of the UNIX/Linux Server into Operations Manager.
The script accepts a list of UNIX/Linux hosts on the input pipe. The hosts are represented either as strings with fully qualified domain names (FQDN) or as objects with a «ComputerName» string property with the FQDN.
The output of the script is a list of objects with a «ComputerName» string property added/changed to contain the FQDN of the Unix/Linux host and a «Status» property added/changed to contain the status of the operation for the current host. All status strings except ‘OK’ are an error message.
The following parameters can be used with the DiscoverUnixAgent script:

Parameter Definition
Port Port to connect to at remote host (default is 22)
Server Name of OpsMgr server to use or empty string to use current computer (default)
RootManagementServer Name of OpsMgr root management server to use or empty string to use current computer (default)
Username User name to use to connect to remote host (required)
Password Password to use to connect to remote host (required)
Distro Distribution or OS name (required). (see below for valid combinations of operating systems, versions and architectures)
Version OS version of the remote host (required). (see below for valid combinations of operating systems, versions and architectures)
Architecture OS architecture of the remote host (required) (see below for valid combinations of operating systems, versions and architectures) 
Target Additional remote computer to discover (done before any hosts piped into script)
Valid combinations of operating systems, versions and architectures:
OS Valid versions Valid Architectures
AIX 5.3 | 6.1 Powerpc
HPUX 11iv2 | 11iv3 PARISC
Solaris 8 | 9 | 10 SPARC
  10 x86
(ver > 120012-14)
RHEL 4 | 5 x86 | x64
SLES 9 x86 | x64
10 | 11 x86 | x64

      

 
Usage:

DiscoverUnixAgent.ps1-Port: -Server:
-RootManagmentServer: -Username: -Password:
-Distro: -Version: -Target:

Example:
To sign the certificate and discover the x86 version of the SUSE Linux Enterprise Server 10 (SLES) Agent to the SLES 10 server named SLES10-1.contoso.com, the following would be used:

InstallUnixAgent.ps1 -Username:root -Password:password -Distro:SLES -Version:10
-Target: SLES10-1.contoso.com

As before, the script can also be executed without the parameter names, however, in these instances all the parameters must be provided.

Chaining the PowerShell Scripts

The Cross Platform PowerShell scripts are designed so that they can be chained together. For example, you may want to deploy, install, sign, and discover a single UNIX/Linux server (or a group of UNIX/Linux servers) by using a single command. This is done the same way other PowerShell scripts are chained together — by piping the output of one command into the input of the next.
However, in these instances, we want to make sure that the output from one command is only piped into the next if the action being performed was successful. For example, if the initial agent installation fails, we don’t want to attempt to discover the server into Operations Manager. This can be done in a couple of ways.
Examples:
This command passes the output from the first script into the second script, but only if the first one was successful:

Type File_of_hosts | InstallUnixAgent.ps1 | Where { $_.Status -eq «OK»} | DiscoverUnixAgent.ps1

This command passes the output from the first script into the second script, but only if the first one was successful. Otherwise, it will write out an error status:

Type File_of_hosts | InstallUnixAgent.ps1  | foreach { if ($_.Status -eq «OK»)
{ Write-Output $_ } else { Write-Error $_.Status } } | DiscoverUnixAgent.ps1

This example adds another piped command to return a list of the UNIX/Linux Servers against which the scripts were run and the outcome of each:

Type File_of_hosts | InstallUnixAgent.ps1  | foreach { if ($_.Status -eq «OK»)
{ Write-Output $_ } else { Write-Error $_.Status } } | DiscoverUnixAgent.ps1 | Foreach { Write-Host $_.ComputerName $_.Status }