Tattoo custom information during OSD deployment into Windows images

Are you a deployment engineer, or are you working with Operating System deployment and are you using Configuration Manager 2012 to do so ? Do you need to Tattoo OSD information into your image? Save your self a lot of time and let the OSD Tattooer Script do the hard work for you

5 Star
3,555 times
Add to favorites
System Center
E-mail Twitter Digg Facebook
Sign in to ask a question

  • Is there a way to include the date the image was ran?
    1 Posts | Last post October 09, 2015
    • I have not been able to identify a OSD variable that contains the current date.  Would it be possible to add this value?  Any help is appreciated. 
  • New Errors
    3 Posts | Last post July 06, 2015
    • that error is gone but now there are new ones:
      Exception getting "Value": "The parameter is incorrect. (Exception from HRESULT	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
      : 0x80070057 (E_INVALIDARG))"	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
      At C:\_SMSTaskSequence\Packages\DP000012\New-OSDTattoo.ps1:826 char:63	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
      +         New-Variable -Name $CustomVariable -Value $tsenv.value <<<< ($CustomV	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
      ariable)	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
          + CategoryInfo          : NotSpecified: (:) [], GetValueInvocationExceptio 	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
         n	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
          + FullyQualifiedErrorId : CatchFromBaseAdapterParameterizedPropertyGetValu 	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
         eTI	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
       	RunPowerShellScript	02.03.2015 17:00:12	3160 (0x0C58)
      I don't have any customization.
      There are also some others like wmi related
      cheers, roland
    • Hi Roland, this is curious because it work for me in my lab, and I have had feeback from a beta tester that confirmed it work also.
      How did you call the Script?
      Where did you put the step in the Task Sequence? be sure to put it at the very end of it.
      Have you followed the procedure outline here: 
      Otherwise, you can always send me your SMSTS log file at stephanevg at
    • I can't tell from this log but I was also getting similar errors when using just the '-Registry" option. I would get an error that there wasn't a parameter of "name". The main script region uses this line: "New-OSDTattoo -Root $Root -Name $($Tatoo.Name) -Value $($Tatoo.value) -Registry". The function in the script has parameters for -"ProperyName", so  I switched the line to: "New-OSDTattoo -Root $Root -PropertyName $($Tatoo.Name) -PropertyValue $($Tatoo.value) -Registry" it worked.
  • WMI data and 30chars limit
    5 Posts | Last post April 14, 2015
    • Hi,
      I've implemented it again as described and it works now, no error messages.
      But have you tried to import the WMI namespace into hw-inventory?
      If you do you may get an error message that the names have to be unique within the first 30 characters.
      TaskSequenceInstallationName and TaskSequenceInstallationID are the same on the first 30 characters, hence the class can't be imported as-is.
      cheers, Roland
    • Hi Roland, thanks a lot for your feedback!
      How did you fixed the issue? 
      If not, we could look into it together if you like. (Email would be simplest :))
    • Didn't :), just started from scratch putting it at the right place.
      (It's a new environment)
      But the 30char issue, when importing inv from a client, should show up everywhere though. You don't have that? (CM12 R2, CU4)
      cheers, roland
    • Stephane?
      Another note: The script here still uses the long names for TS Name and ID. As mentioned, to long to be imported intoCM12. On your blog ( the entries have been shortened (TSName, TSID, in the screenshot), those wouldn't cause an error message.
      I've changed the values myself and although the namespace is created on the client, with the data and the SQL-table get's created, that table is always showing up empty. There are also no error messages on the client or server.
      Any idea on that?
      Otherwise, if you post your updated script, I'll try that again.
      cheers, roland
      PS: We can mail directly: janusro1 at
    • Hi Roland, I have adapted this script so it will not Impact the ConfigMgr Import anymore (Version 1.4.2).
      For the curious ones out there, I explained how to Import the tattoed Information in ConfigMgr by extending the Hardware Information right here -->
  • write-log
    4 Posts | Last post March 04, 2015
    • Look like as if version 1.4 lost the complete write-log function... :)
      that's what my TS says and I can't find it in the script.
    • Thanks for your feedback Roland_J.
      Indeed, i missed some lines while cleaning up the script. 
      I have fixed that in version 1.4.1 (Updated to Technet. Please re-download)
      Let me know how it goes for you.
    • Stephane,
      I tested 1.4.1 on 5 DEV workstations and now we are up to 63 production workstations and everything worked very well for me.  Also completed a SSRS report for Executive reporting. Thanks for working on this for everyone!
    • That is great news JDeeds! I am happy to help! :)