O R G A N I C / F E R T I L I Z E R: 09.13

Sep 27, 2013

system center orchestrator 2012 unleashed

i completely forgot to blog about this on its release. you’ve probably already seen all my hassling about it on linkedin or twitter already so this is old news anyway, right? :)

the orchestrator book is finally released. it’s available on amazon in both paperback and kindle edition. if you don’t know orchestrator yet, it’s time to learn. it’s pretty neat stuff. quite happy it’s finally out!

here’s a complete description:

Using System Center 2012 Orchestrator, you can capture and document processes across your entire IT organization, establishing the automation you need to deliver advanced cloud services and self-adjusting computing resources.

Authored by five leading System Center experts, this comprehensive reference and technical guide brings together all the knowledge you’ll need to architect, install, implement, integrate, and maximize the value of your own Orchestrator solutions. The authors introduce current best practices based on large-scale enterprise implementations they’ve personally led or participated in.

This up-to-date guide shows how to apply Orchestrator’s major improvements to implement IT process automation in any environment, including private clouds. You’ll start with context: what Orchestrator does, how it has evolved, how it works, and essential architecture and design techniques. Next, the authors help you make crucial up-front decisions about activities, runbooks, security, and administration. Finally, you’ll find expert guidance for integrating Orchestrator with the rest of System Center and with Windows Azure cloud services—including advanced automated workflows that encompass both data center and cloud.

Detailed information on how to…

  • Understand System Center 2012 Orchestrator’s capabilities, evolution, architecture, and design, including SP1 improvements and R2
  • Successfully install System Center 2012 Orchestrator and migrate smoothly from Opalis Integration Server 6.3
  • Take full advantage of Orchestrator’s advanced new runbook automation capabilities
    Configure activities associated with runbook control, systems, scheduling, monitoring, files, email, notification, and data handling
  • Design runbooks for fault tolerance and optimal performance
  • Enforce strong security using roles, permissions, and auditing
  • Deliver integration capabilities for Operations Manager, Service Manager, Configuration Manager, Virtual Machine Manager, and Data Protection Manager
  • Automate end-to-end data center/ cloud workflows with integration packs and PowerShell
    Create your own integration packs with Orchestrator Integration Toolkit (OIT.SDK)
  • Support Orchestrator 2012, troubleshoot problems, and discover the best web and third-party resources

Sep 24, 2013

PowerShell: Accessing the Clipboard

Every time I do something in PowerShell, I find something else new to love. I’m pretty familiar with using “mycommand | clip” to send something directly to the clipboard. Found out that retrieving stuff from the clipboard is almost as easy:

> Write-Output "crap" | clip
> [System.Windows.Forms.Clipboard]::GetText()


UPDATE: Added the below statement because I run into this constantly when working with arrays. This splits your array on whitespaces.

$myVar -split '\s+'

Thank you to PowerShelladmin.com for this goodness on split operators.

Sep 12, 2013

orchestrator: ftp integration pack error

i was recently assigned some work that required automating some ftp tasks. i thought what a perfect opportunity to try out the ftp integration pack (IP) in orchestrator! after configuring the ftp options, i tried to use one of the activities and hit a problem: failed to initialize configuration object.




i don’t normally look at stack traces and know what the hell is going on so i immediately went to my crutch and starting searching the entire world of knowledge and finally landed on this post describing the exact same problem. in the end, the original poster (OP) fixed the issue by uninstalling all of his IPs and reinstalling them. that seemed like total crap to me so i dismissed it and forgot about it until yesterday when i found some time to really look at this problem.



i had two environments to work with, both not working. the first thing i tried was the OP’s fix. i uninstalled everything and reinstalled the ftp IP. it worked. miraculous. well, now that i had one working environment, i ran some directory comparisons followed up by file version comparisons. everything matched up. nauseating.

after that came up empty, i took a comparison of the ftp installation log that gets generated when deploying the IP. after pouring over the working and broken deployment logs, i came across what appeared to be the most valid problem in the broken deployment.

MSI (s) (5C:80) [18:52:25:455]: skipping installation of assembly component: {E62B04EA-3903-4E06-B59E-D59C65E4E993} since the assembly already exists
MSI (s) (5C:80) [18:52:25:455]: skipping installation of assembly component: {EC4186F1-7361-4BDE-94CD-977F7423BD4C} since the assembly already exists
MSI (s) (5C:80) [18:52:25:455]: skipping installation of assembly component: {359797A9-050F-48EA-9E50-8B293510AB2D} since the assembly already exists

when compared to the working deployment, i couldn’t find these lines. that was the giveaway. i searched for the GUIDs in the broken deployment logs and was able to locate the lines that detailed the exact assembly components. here’s an example:

Line 853: MSI (s) (DC:44) [17:58:12:205]: Executing op: AssemblyCopy(SourceName=6zp65wgq.dll|Microsoft.SystemCenter.Orchestrator.Integration.Framework.Core.dll,SourceCabKey=OITFrameworkCore.B2E2426B_5261_46EB_A61F_C536FB02167D,DestName=Microsoft.SystemCenter.Orchestrator.Integration.Framework.Core.dll,Attributes=512,FileSize=51040,PerTick=65536,,VerifyMedia=1,,,,,ComponentId={E62B04EA-3903-4E06-B59E-D59C65E4E993},IsManifest=1,,,AssemblyMode=0,)


by the way, if you’re interested, here’s the log location and name:

location: <program files>\common files\microsoft system center 2012\orchestrator\management server\components\logs
filename: 20130912122320952_{F5D3B6E7-3286-487D-BE06-27A0D69AC367}.log

i was able to trace back the original installation stemming from the exchange mail IP available on codeplex. that doesn’t mean anything but did show up in all of the environments with the same thing.



the assembly components and filenames mapped as indicated below. the directories all start at <windir>\assembly\gac_msil.

guid assembly directory
E62B04EA-3903-4E06-B59E-D59C65E4E993 Microsoft.SystemCenter.Orchestrator.Integration.Framework.Core.dll


EC4186F1-7361-4BDE-94CD-977F7423BD4C Microsoft.SystemCenter.Orchestrator.Integration.Framework.dll


359797A9-050F-48EA-9E50-8B293510AB2D Microsoft.SystemCenter.Orchestrator.Integration.dll



please exercise caution and test this in your own environment since this is completely unsupported. also, the safest method is to follow what the OP suggested and uninstall all IPs and reinstall them. this works because it removes the assemblies that the ftp IP installation will not overwrite.

  • uninstall the ftp integration pack. do this first to clear the path of the installation that will happen after dealing with the assemblies.
  • unregister the assemblies. this requires the use of regasm which is in your .net framework directory. i found mine under <windir>\microsoft.net\framework\v4.0.30319. with administrative credentials, run regasm. it should look pretty similar to the following:

    regasm /u "C:\windows\assembly\GAC_MSIL\Microsoft.SystemCenter.Orchestrator.Integration\\Microsoft.SystemCenter.Orchestrator.Integration.dll"

    regasm /u "C:\windows\assembly\GAC_MSIL\Microsoft.SystemCenter.Orchestrator.Integration.Framework\\Microsoft.SystemCenter.Orchestrator.Integration.Framework.dll"

    regasm /u "C:\windows\assembly\GAC_MSIL\Microsoft.SystemCenter.Orchestrator.Integration.Framework.Core\\Microsoft.SystemCenter.Orchestrator.Integration.Framework.Core.dll"
  • delete the assemblies. now that they are unregistered, delete the assemblies in the table above. trying to install over them after unregistering doesn’t seem to work since the installer still detects they exist.
  • reinstall the ftp integration pack. at this point, reinstall the IP. if you look at the deployment log, you should no longer see the “skipping installation” lines mentioned earlier.

and now… it works.


Sep 10, 2013

winnate: upgrading a windows 8.1 preview version to rtm

you might have missed the news, but windows 8.1 and server 2012 r2 rtm versions are available for download now. in celebration of this occasion, i draw upon your memory. remember this FULLY UNSUPPORTED little gem when you upgraded your beta version of windows 8 to rtm? uh huh. yes, you do. use at your own risk. feeling like living dangerously?

here’s how it’s done:

  1. expand the installation media or copy to a writeable location
  2. open the directory “sources”
  3. locate the file named “cversion.ini”
  4. modify the content, changing the values to:

now away you go. when you install, it’ll treat it as if you’re installing over windows 8, not windows 8.1 preview. :)

Sep 3, 2013

searching for an object by guid in active directory

before we get started, why the need for this? well, you can’t straight up search active directory for an object with a guid that looks like this: {af966e8e-7aee-4c0f-b0c8-1985de37c276}. this is referred to as “registry format.” there are two ways to do this as i will illustrate below.


the short way

adfind -binenc -f "objectguid={{GUID:af966e8e-7aee-4c0f-b0c8-1985de37c276}}"

handles all the conversions quite nicely as long as you specify the correct type.


the long way

$myGUID = [guid]'af966e8e-7aee-4c0f-b0c8-1985de37c276'
$myGUIDhex = –join ($myGUID.ToByteArray() | % { $_.tostring("X").padleft(2,"0")})
$myGUIDhex = $myGUIDhex -replace '(..)','\$1'
get-qadobject –ldapfilter "(objectguid=$myGUIDhex)"

switches the guid to hex and builds an value that looks like 8E6E96AFEE7A0F4CB0C81985DE37C276 and eventually \8E\6E\96\AF\EE\7A\0F\4C\B0\C8\19\85\DE\37\C2\76 which is used in the search filter.


learned a few things here. first, adfind continues to rock. never used the –binenc switch before. second, never used –join in powershell. third, never had the occasion to use $1 variables in regex. all great stuff.

thanks to this article.

2012 r2 series: enhancements to iaas

oh man, a two-part post! that means twice the reading, twice the summarizing and twice the condensing. :/ oh well. at least all this typing will help warm up my new sculpt keyboard. :) this is the fifth post in the series. read the full post composed of iaas innovations and service provider & tenant iaas experience whenever you get around to it. this covers the first part.

r2 enhancements in networking



r2 enhancements in compute

  • quality of service controls on virtual machine storage while machine is running
  • clustered virtual machines with virtual disks on a separate file server
  • cluster aware updating allows deployment of updates to clustered environments with no downtime
  • exported copies of running virtual machines
  • live migration with compression provides 2x to 3x faster migration, smb direct even faster
  • 2nd gen virtual machines, uefi-based reduces use of emulated legacy devices
  • full remote desktop capabilities (sound, graphics, and most importantly – copy/paste!)


r2 improvements in storage

  • optimized smb direct which takes advantage of rdma-enabled network cards
  • optimized rebalancing of scale-out file server – smb session transitioned seamlessly to optimal node
  • live migration over smb
    • faster migration over rdma-enabled nic
    • multi-channel capable to stream live migration across multiple nics
  • capability to define different bandwidth limits per category of smb traffic
  • data automatically moved between tiered storage media based on performance need
  • writes to storage satisfied by ssd tier and later written to hdd tier (write-back caching)
  • deduplication available on running virtual machine and cluster shared volumes
  • storage spaces integrated into scvmm
  • storagement management api (sm-api) provides unified management for sans, storage spaces, etc
  • scvmm can deploy/configure clustered scale-out file servers