For a recent client, I've had to automate the removal of Alternate Data Stream information from files, as this was causing ImageX to crash while taking a .WIM backup of critical systems. We would see the file name listed in the BDD and ZtiBackup.logs with an error code 2 next to the file name. Massive trial and error lead me to the discovery that some files with Zone Identifier or other types of Meta data can cause imageX to fail. I discovered Mark Russinovich's excellent Streams.exe tool, which is made to read and destroy ADS info, and it perfectly solves this problem. When I run it manually, all deployments complete without an issue.
In the interests of automation, I've modified a .vbs file and added it to my Script Root, and yet I'm getting errors in deployment of "File not found", when the task sequence gets to that file. In addition, I've tried rendering the same commands as a .batch file, also with no success. Would you scripting professionals mind taking a look at this and letting me know if you see any errors?
Thank you!
Edit: I can't seem to use either uploader, so I'll just post the text of my Vbs below.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.
Hi guys,
For a recent client, I've had to automate the removal of Alternate Data Stream information from files, as this was causing ImageX to crash while taking a .WIM backup of critical systems. We would see the file name listed in the BDD and ZtiBackup.logs with an error code 2 next to the file name. Massive trial and error lead me to the discovery that some files with Zone Identifier or other types of Meta data can cause imageX to fail. I discovered Mark Russinovich's excellent Streams.exe tool, which is made to read and destroy ADS info, and it perfectly solves this problem. When I run it manually, all deployments complete without an issue.
In the interests of automation, I've modified a .vbs file and added it to my Script Root, and yet I'm getting errors in deployment of "File not found", when the task sequence gets to that file. In addition, I've tried rendering the same commands as a .batch file, also with no success. Would you scripting professionals mind taking a look at this and letting me know if you see any errors?
Thank you!
Edit: I can't seem to use either uploader, so I'll just post the text of my Vbs below.
<job id="Remove-DataStreams">
<script language="VBScript" src="ZTIUtility.vbs"/>
<script language="VBScript">
'//----------------------------------------------------------------------------
'// Purpose: Used to Remove Alternate Data Streams/Zone Identifiers
'// Usage: cscript Remove-DataStreams.wsf [/debug:true]
'// Version: 1.0 - 20 Nov 2012 - Stephen OWen
'//
'// This script is provided "AS IS" with no warranties, confers no rights and
'// is not supported by the authors or Deployment Artist.
'//
'// Instructions: In the MDT Application, create a source folder and copy
'// this script and SysInternals Streams.exe
'//
'//----------------------------------------------------------------------------
'//----------------------------------------------------------------------------
'// Global constant and variable declarations
'//----------------------------------------------------------------------------
Option Explicit
Dim iRetVal
'//----------------------------------------------------------------------------
'// End declarations
'//----------------------------------------------------------------------------
'//----------------------------------------------------------------------------
'// Main routine
'//----------------------------------------------------------------------------
On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0
'//---------------------------------------------------------------------------
'//
'// Function: ZTIProcess()
'//
'// Input: None
'//
'// Return: Success - 0
'// Failure - non-zero
'//
'// Purpose: Perform main ZTI processing
'//
'//---------------------------------------------------------------------------
Function ZTIProcess()
oLogging.CreateEntry "Remove-DataStreams: Preparing to remove ADS Information", LogTypeInfo
' Disable Zone Checks
oEnv("SEE_MASK_NOZONECHECKS") = 1
' Removal of ADS values begins here
' iRetVal = oUtility.RunWithHeartbeat("streams.exe /accepteula -d -s "C:\Documents and Settings"")
' oLogging.CreateEntry "Remove-DataStreams: Completed Removal of ADS in C:\Documents and Settings"
iRetVal = oUtility.RunWithHeartbeat("streams.exe /accepteula -d -s C:\")
oLogging.CreateEntry "Remove-DataStreams: Completed Removal of ADS in C:\"
if (iRetVal = 0) or (iRetVal = 3010) then
ZTIProcess = Success
Else
ZTIProcess = Failure
oLogging.CreateEntry "Remove-DataStreams: Error processing script Check the log."
End If
' Enable Zone Checks
oEnv.Remove("SEE_MASK_NOZONECHECKS")
oLogging.CreateEntry "Remove-DataStreams: Return code from command = " & iRetVal, LogTypeInfo
oLogging.CreateEntry "Remove-DataStreams: Finished Removal", LogTypeInfo
End Function
</script>
</job>
Share this post
Link to post
Share on other sites