For integration into SCSM, SMLets is great and can be downloaded from the following location: https://smlets.codeplex.com/
Using in System Center Orchestrator really enhances the automation ability of SCSM, mixed with the integration pack.
There are some really good guides on getting this working:
- http://blogs.catapultsystems.com/mdowst/archive/2013/10/29/install-smlets-on-windows-server-2012-without-scsm-console/
- http://www.lazywinadmin.com/2014/09/powershell-scsm-install-and-config.html
However, once you think all the configuration is complete and you are working in PowerShell:
So, you then repeat the same in a Runbook:
And…… arrggghhhh:
The detail being:
Cannot load Windows PowerShell snap-in C:\Program files\Common Files\SMLets\SMLets.Module.dll because of the following error: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Loader Exceptions:
Could not load file or assembly ‘Microsoft.EnterpriseManagement.Core, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.
Could not load file or assembly ‘Microsoft.EnterpriseManagement.Core, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.
Could not load file or assembly ‘Microsoft.EnterpriseManagement.Core, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.
So, the issue is my case; is that the version of the DLLs copied into the c:\windows\assembly folder and then registered are actually the SDK files from the SCORCH 2016 installation, which can only use PowerShell V3:
The ones from a 2012 r2 version, which support PowerShell V2 aka default to Orchestrator; are as follows:
Solution
So, there are two options:
- Copy the old files into Assembly and register
- Make a registry change to allow Orchestrator play with later PowerShell versions
Option 1 – Replace the files:
Okay I know you want the registry…. but wait:
- Unregister the 2016 R2 DLLs
- Copy the new (or old as the case may be) files into the c:\windows\assembly
- Register the new / old files
Completed by PowerShell:
.‘C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe’
-u
Microsoft.EnterpriseManagement.Core
.‘C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe’
-u
Microsoft.EnterpriseManagement.ServiceManager
copy
D:\nobackup\2012R2\*
C:\Windows\assembly
.‘C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe’
-i
C:\Windows\assembly\Microsoft.EnterpriseManagement.Core.dll
.‘C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe’
-i
C:\Windows\assembly\Microsoft.EnterpriseManagement.ServiceManager.dll
Option 2 – Registry change
Yes, indeed; a single registry change will allow Orchestrator to unleash later PowerShell; thanks’ go to the following post:
It is a simple reg fragment to tell 32Bit to use the latest version as follows:
- Open regedit edit and goto location: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework]
- Create a new DWORD with the name: OnlyUseLatestCLR with a decimal value of 1
Voila! That is it…. No reboot, just give it a whirl. I try the same runbook test, without even coming out of it: