Your SlideShare is downloading. ×
  • Like

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Automating OSD and Post-OSD Configuration with Powershell and Orchestrator


Andrew Craig präsentierte in seinem Referat Möglichkeiten, wie Runbooks und Webservices mit Powershell und Orchstrator ausgelöst werden können.

Andrew Craig präsentierte in seinem Referat Möglichkeiten, wie Runbooks und Webservices mit Powershell und Orchstrator ausgelöst werden können.

Published in Business , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Configuration Manager Community Event Switzerland 2014
  • 2. Automating OSD and PostOSD Configuration with Powershell and Orchestrator Triggering Runbooks and Webservices with Powershell in Pre- and Post-Execution to conform with Asset Details in the CMDB, allowing complex zero touch deployments throughout the Desktop life cycle.
  • 3. Preparing the environment Demo
  • 4. Demos • The following demos contain plenty of powershell examples of querying WMI, looking up datastores or SQL tables and communicationg with Webservices and Orchestrator. • The commands are included in slides after the demos.
  • 5. Using Powershell to trigger local and remote WMI queries and methods Demo
  • 6. Using Powershell to access a datastore Demo
  • 7. Using Powershell to trigger web services Demo
  • 8. Using Powershell to add data to tables Demo
  • 9. Using Powershell to trigger Orchestrator runbooks Demo
  • 10. Powershell Commands – local WMI • $macAddress = (gwmi -Namespace rootcimv2 -Class Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'").MACAddress • $smBIOSGUID = (gwmi -Namespace rootcimv2 -Class Win32_ComputerSystemProduct).UUID
  • 11. Powershell Commands – lookup xml • [xml]$configScript = (New-Object System.Net.WebClient).DownloadString("http://server:86/filena me.xml") • $dhcpServer = $configScript.Config.dhcpServer
  • 12. Powershel Commands – write to SMSTS • $tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment • $tsenv.Value("DHCPServer") = $dhcpServer • $log = "$env:windirMaintenanceLogsPreExecutionHook.log" • if(!(Test-Path $log)){New-Item -Path $log -ItemType File Force} • "TS Variables:" | Out-File $log -Append • $tsenv.GetVariables() | %{"$_ = $($tsenv.Value($_))" | Out-File $log -Append}
  • 13. Powershell Commands – storing Credentials • #Enter credential and save to file • $key = (2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43,6,6,6,6,6,6,31,33,60,23) • $cred = Get-Credential • $pwFile = New-Item -Path "c:WindowsTemp" -Name "pwFile.txt"-ItemType File -Force • $userFile = New-Item -Path "c:WindowsTemp" -Name "userFile.txt"-ItemType File -Force • $cred.UserName | Set-Content -Path $userFile • $cred.Password | ConvertFrom-SecureString -Key $key | Set-Content -Path $pwFile • #Retrieve credentials from text file • $userFile = "userfile.txt" • $pwFile = "pwfile.txt" • $user = Get-Content $userFile • $pw = Get-Content $pwFile • $password = $pw | ConvertTo-SecureString -Key $key • $credential = New-Object System.Management.Automation.PsCredential($user,$password)
  • 14. Powershell commands – call webservice # Create a webservice connection try{ $svc = New-WebServiceProxy –Uri 'http://aclabcm01:88/ConfigMgrWebService.asmx' }catch{ $err = $_ } if($err -ne $null){ "$err - exiting" | Out-File $log -Append exit } Get methods: $svc | gm –MemberType Method Get method parameters: $svc | gm –MemberType Method –Name GetComputerRessourceID | select Definition
  • 15. Pete Zerger’s blog • • Leverage PowerPivot in Excel to get the Runbook and Runbook Parameter GUIDs
  • 16. Use Orchestrator to add computers • Set up a database to store requests • Write to the database via Powershell in the Pre-Execution Hook • Schedule Runbook to read from the database every 5 – 10 minutes • Use either an Integration Pack or a Powershell script to programatically add the computers • Update the status in the database
  • 17. What can we automate after OSD? • Configuration post-OSD of a computer is by design carried out by ConfigMgr • What cannot be accomplished in the TS can be deployed as configuration settings in a baseline, or installed as an application • Triggering post-install tasks really only affects VDI situations where the ConfigMgr client may be removed after staging • SMSTSPostAction: • C:Windowsccmsetupccmsetup.exe /uninstall • Only one command possible • postConfig.ps1 • Wrap commands like ccmsetup uninstall in a script • Other actions • • • • • Prepare disk for Hyper-V Citrix PVS prepare machine for P2V XenDesktop prepare disk as master Other third party virtualisation products Remove from domain
  • 18. Questions & Answers Thank you!
  • 19. Kontakt aufnehme • • • Twitter: @mracraig