Task Sequence Stops at UDI Wizard

Im using configmgr 2012 R2 with MDT integration.  I have a task sequence that is getting stuck on the UDI wizard stage.  In the progress bar it just gets stuck at UDI Wizard and gets no further.  the smsts log stops at "mapping server
share"  the user logged in has permissions to that drive and I can browse it.
I have used this udi wizard in other task sequences before.  any ideas on where to look?
log file located at 
http://www.filedropper.com/smsts11

I'm having a pretty similar problem.  I have a task sequence to capture user state and at the end, there is a section to copy logs. The task sequence just stops there.
The last line in smsts.log is "Mapping server share: \\server\share$".
The last line in zticopylogs.log is "Mapping server share: \\server\share$".
The last few lines in BDD.log are...
Microsoft Deployment Toolkit version: 6.2.5019.0 Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
The task sequencer log is located at C:\WINDOWS\CCM\Logs\SMSTSLog\SMSTS.LOG.  For task sequence failures, please consult this log. Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
Not Wizard = True Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
Property UserCredentials is now = False Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
Validate Against UNC: \\server\share$ Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
Validate Against UNC: \\server\share$ Wizard 2/21/2014 1:49:50 PM 0 (0x0000)
It hangs pretty much indefinitely.  I'm really stumped on this one because there aren't error codes or anything else to look up.

Similar Messages

  • Build and capture task sequence stops after apply windows updates

    Hi
    SCCM 2012 SP1 CU4. Deploying Windows 7 SP1.
    Pulling my hair out over this one. I successfully performed a build and capture installing some applications. When I choose to install Windows updates, the updates install, the system reboots then doesn't continue. Applications don't install, image isn't captured.
    I've tired using the default B&C TS and receive the same results. I've amended the TS to as follows, as suggested in a technet forum post: https://social.technet.microsoft.com/Forums/en-US/a535e509-fc6a-483c-bf24-7e2aa064e5b7/deploying-100-of-available-software-updates-during-a-task-sequence?forum=configmanagerosd
    Looking at smsts.log there's errors relating to not accepting the license agreement, but I didn't think this would stop the TS. 
    Can someone point out why the deployment stops?
    https://dl.dropboxusercontent.com/u/23479177/smsts-20141113-182413.log 
    Cheers

    This is very common scenario you´re having! :)
    For OSD and for Capture I always create myown Software Update Group, which lets me totally control, what updates goes to the image and which doesn´t. I then edit membership of update and tag or un-tag update to the group.
    I suggest you do the following:
    1. Create manual Computer record and add it to OSD Capture collection.
    2. Create SUG for OSD Capture and un-tag updates which are listed in KB2894518. But that might not be enough.
    3. Deploy TS to the OSD Capture collection.
    4. Create/modify virtual machine with MAC matching the computer record.
    5. Run PXE and hook Capture TS.

  • MDT 2013 Windows 8.1 Task sequence Stops After first Reboot. login

    Hi There,
    The issue I am having is that After the OS gets laid down, and the Windows 8.1 computer reboots, The task sequence does not continue. It fails everytime. There are not any obvious errors that happen in the process that I can see in the logs. But I have
    customized this process quite a bit and I could use some help. We are deploying potentionally to over 30,000 computers.
    The test machine I have been using is the Surface pro 2.
    The interesting part is after a failure is if I start the process over again ,  boots into PE, then run diskpart manually from command prompt to Clean Disk 0, and then reboot and start the MDT task sequence, it will deploy fine.
    I also have a custom step that copies the TS media from the stick to a Recovery partition I create. The user can launch a -re-image or MDT refresh from an Icon/script, which will unhide this "recovery partition", and kick off a lite touch refresh.
    This works succesfully everytime. We have remote locations with very slow links, so MDT over the network or MDT integrated with SCCM is not an option at this time. So this is the solution.
    I am attempting to use MDT 2013 to deploy Windows 8.1 Offline, and using GPT partitions.
    I am using a custom Format and partiition Step, that call the CustomDiskpart.txt script from %deployroot%\Scripts.
    I am also using a Split image, as multi partitioned EFI/NTFS USB sticks are not a possibility for us , also, the USB sticks capable of this are seen by MDT as a "fixed drive" anyways. Which can cause issues in itself. So the LTIAPPLY.wsf has
    been edited to search and apply ther split .swm files.  This works well.
    After the Task sequence failure I have tried launching the Litetouch scripts from the C:\MINNINT folder manually to continue the sequence, but it doesnt  do anything.
    I don't want to always be running Diskpart manually before imaging a new OEM computer. I needa second pair of eyes on this.
    Thank You in advance!

    Hi,
    Thanks Again for taking a look.
    I checked the sysprep log in the image and they look fine. No errors.
    As requested here are some logs. Let me know if I can provide anything else.
    BDD.log
    litetouch.log
    SMSTS.log
    Im not actually attempting to provide a recovery image. What I am doing is leveraging MDT to refresh the computer remotely. We can update the MDT media on the hidden data partition,when required and kick it off remotely. Some of the computers are very
    remote, and without SCCM DP's, plus a combination of slow links and a lack of deskside techs made this a requirement. This works without incident.
    The only issue I have is on a new computer if I run the sequence (offline USB media) it will fail the first time, unless I run a diskpart clean in PE first.. Then it will succeed. Refreshing the computer is fine.

  • KeyboardLocale and SystemLocale during UDI Wizard (MDT 2013)

    Hi
    We're using SCCM 2012 R2 integrated with MDT 2013
    we deploy Windows 7 with Task Sequence process with UDI Wizard
    we have 2 main problems regarding the Language Settings
    1. in the wizard we define UserLocale, KeyboardLocale and UILanguage, OSDTimeZone
    what about SystemLocale ? which is very basic to set, but there is no built-in combobox for it.
    the only workaround I can come up with is to build a custom page with that setting but it is hard to create a combobox with all the available languages, even when editing the XML directly and not via the UI.
    2. if I set the KeyboardLocale to Hebrew for example in the Wizard, the SMS environment variable is set to 0409:0000040d
    this causes the deployment to end with Hebrew installed with US keyboard layout. which is wrong! 
    I expect the value to be 040d:0000040d (Hebrew keyboard with Hebrew layout)
    which brings me to another question... how can I define multi keyboards? because my actual goal is to have English as my default keyboard language and to have Hebrew as a secondary keyboard.
    it is not Hebrew in particular. we deploy Windows in 20 different sites worldwide and English should be always be the default language and we want to add another local additional language
    I added a script that modifies the keyboardlocale and converts it from 0409:00000### to 0409:00000409;0###:00000###, but I feel like it is too much for this little setting that should be so basic...
    any help will be appreciated. thanks
    Tamir Levy

    Hi,
    Here is video for your reference.
    Configuring MDT 2012 UDI Replace Computer Scenario
    http://technet.microsoft.com/en-us/video/configuring-mdt-2012-udi-replace-computer-scenario
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • UDI OSD Task Sequences started failing with 0x80070002 error in SCCM 2012

    This is kind of long, but here goes...
    We built a UDI task sequence in SCCM 2012 (with MDT integration) that we were testing for deployment of a couple of different Win7 images.  We customized the UDI experience thru the UDI wizard and XML file and OS deployment worked as expected
    thru the task sequence (testing on Hyper-V VMs). Recently, this UDI TS started failing with error 0x80070002  during what appears to be the "Use Toolkit Package" step.  This is after the OS image has already been laid down and after the ConfigMgr
    client has been installed/configured.  The SMSTS.log reports "Failed to open the task sequence key HKLM\Software\Microsoft\SMS\Task Sequence.  Error code 0x8007002"  Among other errors...I will post the entire log below...
    After the error during deployment, Win7 will boot normally, however, you have no network connectivity and it appears the proper network driver didn't get loaded in the OS. Combine this with the fact that the TS should have joined the machine to our domain,
    but you can't login because no network.. Im not sure if the network issue is a product of the TS failing early or the actual cause of the TS failure. 
    Anyway, I attempted to build another UDI task sequence using the same boot image and toolkit/settings packages, but am experiencing the same error during deployment.  We have a few OSD task sequences built without UDI and those all still work just fine. 
    So, I am at a loss for where the root problem lies.  Any suggestions or assistance would be greatly appreciated.
    Here is the entire SMSTS.log and BDD.log...
    https://skydrive.live.com/redir?resid=D65B1C4362892A26!110&authkey=!AKu5mOvDsXaEgvc
    Thanks
    Richie Tenhet

    your failure does appear to be network (driver or otherwise) or dns related and it cannot contact the management point FQDN just around the time where it should download and execute the
    Use Toolkit Package step...
    "Starting Task Sequence Engine . . . "
    "Non fatal error 0x80072ee7 in sending task sequence execution status message to MP"
    "Start executing an instruciton. Instruction name: Use Toolkit Package. Instruction pointer: 83"
    "unknown host (gethostbyname failed)"
    "sending with winhttp failed; 80072ee7"
    "Tried all the available http based locations. SMB based locations will be attempted now."
    "Failed to resolve the source for SMS PKGID=P0100015, hr=0x80070002"
    "Failed to run the action: Use Toolkit Package.
    The system cannot find the file specified. (Error: 80070002; Source: Windows)"
    that said, check that the package referenced above actually exists and is the correct source version on your distribution points, also verify (press F8 and check can you ping the FQDN of your management point) that you have network connectivity
    around the time of the failure.
    Step by Step Configuration Manager Guides >
    2012 Guides |
    2007 Guides | I'm on Twitter > ncbrady

  • Task Sequence to create VHD doesn't finish.

    I have been putting together a task sequence on our new SCCM 2012 server to create a Win7 VHD using the new features in SCCM 2012 R2 to deploy an OS to a VHD.  The task sequence stops after the "Setup Windows and Config Manager" Step.  It
    doesn't run the shutdown step.  I have been trying to insert steps to run sysprep and they are never run either.  I can manually shutdown the VM and the process completes but I need it to finish the task sequence so that I can eventually install
    additional software.
    The only error I can see in the SMSTS log on the VM is "Failed to create instance for IMTCTokenHandler interface, hr=0x80070005".
    I'm using the default task sequence to create the "Install an existing image package to a virtual hard disk". I've tried using an already created image as well as the OS Source. SCCM 2012 R2, Windows 8.1 ADK.  I have tried recreating that task
    sequence a number of different times.

    The sysprep error may be caused by the rearm count being reached.
    You may run the sysprep command too many times on this referenced Windows. Try on a fresh one.
    Juke Chou
    TechNet Community Support

  • UDI Wizard - Task Sequence Variables.

    Quick question :-)
    How are the variables defined in UDI applied during an OS installation ?
    And does it take precedence over Collection variables ?
    Thx
    Rgds

    Not sure what you about "how they are applied"? Variables, aren't "applied", they are set. Variables simply contain a value and typically "something" uses the value of the variable. Now, what that "something" is depends
    upon the variable itself (if anything -- just because a variable has a value doesn't mean anything actually uses that value). And what that "something" does with the value is up to that "something".
    Many -- not all task sequence variables -- are used by the various processes/exes that correspond to the various steps in the task sequence. In fact, all the task sequence editor does is set a bunch of variables that are in turn used by the steps in your
    task sequence (the task itself is represented by a variable).
    Thus, any values you set in the TS editor are set at "design" time and passed to the TS engine when it starts on a target client. Any values set during the execution of the TS are "run" time variables and will over write the value of
    any like named variables created before they are set including design time variables since they were set at the beginning of the TS.
    Collection variables, like design time variables, are set at the start of the TS execution and thus are over-written by any subsequent setting of the same variable within the execution of the TS.
    Jason | http://blog.configmgrftw.com | @jasonsandys

  • Task Sequence failed to restore captured data from USB drive onto a new machine using UDI task requence

    Hi,
    Environment ConfigMgr 2012 R2
    Replace Scenario: Capture data to a USB external drive and Restore it from USB external drive.
    Steps taken:
    1) Created Computer Association with New computer and Source computer
    2) Deployed UDI replace Task Sequence to Source computer and captured data to a USB external drive
    3) Run UDI Task Sequence from Boot Media to Restore data from USB External drive which had the captured data.
    Issue:
    My task sequence failed to restore data from USB external drive.
    Is there a fix
    Any help is greatly appreciated it. 

    I created a query to see the deployment logs in real time. I see the TS fails when running "Request State Store" task. Here are the logs.
    Severity Type Site code Date / Time System Component Message ID Description
    Error Milestone POK 7/22/2014 4:13:15 PM MININT-P6E4T6G Task Sequence Engine 11141 The task sequence execution engine failed execution of a task sequence. The operating system reported error 1: Incorrect function.
    Error Milestone POK 7/22/2014 4:13:15 PM MININT-P6E4T6G Task Sequence Engine 11135 The task sequence execution engine failed executing the action (Error in the task sequence) in the group (Gather Logs and StateStore on Failure)
    with the error code 1  Action output: [ smsswd.exe ] PackageID = '' BaseVar = '', ContinueOnError='' ProgramName = 'cscript "C:\_SMSTaskSequence\WDPackage\scripts\ztierrormsg.wsf"' SwdAction = '0001' Set command line: Run command line Working dir 'not
    set' Executing command line: Run command line Process completed with exit code 1 Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved.  Microsoft Deployment Toolkit version: 6.2.5019.0 The task sequencer
    log is located at C:\WINDOWS\CCM\Logs\SMSTSLog\SMSTS.LOG.  For task sequence failures, please consult this log. ZTI deployment failed, Return Code = 1 Command line returned 1. The operating system reported error 1: Incorrect function.
    Information Milestone POK 7/22/2014 4:13:14 PM MININT-P6E4T6G Task Sequence Engine 11134 The task sequence execution engine successfully completed the action (Copy Logs) in the group (Gather Logs and StateStore on Failure)
    with exit code 0  Action output: ... 扴捡杫潲湵⹤潬⁧潴尠停䭏偃䍓䵃卐㄰䍜彍潓牵散尤协屄潌獧䍜剏ⵐ䠳䑗塐就瑺獩瑥慢正牧畯摮氮杯潃祰湩⁧㩃坜义佄南䍜䵃䱜杯屳䵓呓䱓杯穜楴慴潴⹯潬⁧潴尠停䭏偃䍓䵃卐㄰䍜彍潓牵散�潌獧䍜剏ⵐ䠳䑗塐就潃祰湩⁧㩃坜义佄南䍜䵃䱜杯屳䵓呓䱓杯作䑓敓畴坰穩牡⹤潬⁧潴尠停䭏偃䍓䵃卐㄰䍜彍潓牵散尤协屄潌獧䍜剏ⵐ䠳䑗塐就协卄瑥灵楗慺摲氮杯潃祰湩⁧㩃坜义佄南停湡桴�潬⁧潴尠停䭏偃䍓䵃卐㄰䍜彍潓牵散尤协屄潌獧䍜剏ⵐ䠳䑗塐就慐瑮敨屲湕瑡整摮䍇潃祰湩⁧潬⁧㩃坜义佄南䍜䵃䱜杯屳䵓呓䱓杯䉜䑄氮杯挠湯整瑮⁳潴尠停䭏偃䍓䵃卐㄰䍜彍潓牵散尤协屄潌�Console
    > Successfully resized the shadow copy storage association Return code from command = 0 Cleaning up default wallpaper registry keys Process completed with exit code 0 zticopylogs processing completed successfully. Command line returned 0.
    Information Milestone POK 7/22/2014 4:13:07 PM MININT-P6E4T6G Task Sequence Engine 11134 The task sequence execution engine successfully completed the action (Move State Store) in the group (Gather Logs and StateStore on Failure)
    with exit code 0  Action output: [ smsswd.exe ] PackageID = '' BaseVar = '', ContinueOnError='' ProgramName = 'cscript.exe "C:\_SMSTaskSequence\WDPackage\scripts\ztimovestatestore.wsf"' SwdAction = '0001' Command line for extension .exe is "%1" %* Set
    command line: Run command lineWorking dir 'not set' Executing command line: Run command line Process completed with exit code 0 Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved.  Microsoft Deployment
    Toolkit version: 6.2.5019.0 The task sequencer log is located at C:\WINDOWS\CCM\Logs\SMSTSLog\SMSTS.LOG.  For task sequence failures, please consult this log. ztimovestatestore processing completed successfully. Command line returned 0.
    Information Milestone POK 7/22/2014 4:13:07 PM MININT-P6E4T6G Task Sequence Engine 11134 The task sequence execution engine successfully completed the action (Gather) in the group (Gather Logs and StateStore on Failure) with
    exit code 0  Action output: ... (BIOS is 'DELL   - 1072009'). Property IsVM is now = False Finished getting virtualization info Connection succeeded to MicrosoftVolumeEncryption There are no encrypted drives Property IsBDE is now = False Processing
    the  phase. Determining theINI file to use. Using COMMAND LINE ARG: Ini file = CustomSettings.ini Finished determining the INI file to use. Added new custom property MYCUSTOMPROPERTY Using from [Settings]: Rule Priority = DEFAULT ------ Processing the
    [DEFAULT] section ------Process completed with exit code 0 ------ Done processing CustomSettings.ini ------ Remapping variables. Property TaskSequenceID is now =  Property DeploymentType is now = NEWCOMPUTER Finished remapping variables. ZTIGather processing
    completed successfully. Command line returned 0 ReleaseSource() for C:\_SMSTaskSequence\Packages\POK0000F. reference count 1 for the source C:\_SMSTaskSequence\Packages\POK0000F before releasing Released the resolved source C:\_SMSTaskSequence\Packages\POK0000F.
    Information Milestone POK 7/22/2014 4:13:03 PM MININT-P6E4T6G Task Sequence Engine 11130 The task sequence execution engine skipped the action (Use Toolkit Package) in the group (Gather Logs and StateStore on Failure) because
    the condition was evaluated to be false.
    Information Milestone POK 7/22/2014 4:13:02 PM MININT-P6E4T6G Task Sequence Engine 11134 The task sequence execution engine successfully completed the action (Set Error Code) in the group (Gather Logs and StateStore on Failure)
    with exit code 0  Action output: Finished with error code 0.
    Information Milestone POK 7/22/2014 4:13:02 PM MININT-P6E4T6G Task Sequence Engine 11124 The task sequence execution engine started the group (Gather Logs and StateStore on Failure).
    Information Milestone POK 7/22/2014 4:13:02 PM MININT-P6E4T6G Task Sequence Engine 11122 The task sequence execution engine skipped the group (Cancelled Wizard Group) because the condition was evaluated to be false.
    Error Milestone POK 7/22/2014 4:13:02 PM MININT-P6E4T6G Task Sequence Engine 11135 The task sequence execution engine failed executing the action (Connect to State Store) in the group (State Restore) with the error code 1 
    Action output: ... ( 0x80070035 ) , trying to connect without username.  The network path was not found.  Unable to connect to
    \\3807000000100000000000:\2fa390ff58558b49c45bf204dfa5717f.  Sleeping for 15 seconds. Unable to connect to share: The network path was notfound. ( 0x80070035 ) , trying to
    connect without username.  The network path was not found.  Unable to connect to
    \\3807000000100000000000:\2fa390ff58558b49c45bf204dfa5717f.  Sleeping for 20 seconds. Unable to connect to share: The network path wasnot found. ( 0x80070035 ) , trying to
    connect without username.  The network path was not found.  Unable to connect to
    \\3807000000100000000000:\2fa390ff58558b49c45bf204dfa5717f.  Sleeping for 25 seconds. Process completed with exit code 1 ERROR - Unable to map a network drive to
    \\3807000000100000000000:\2fa390ff58558b49c45bf204dfa5717f. Unable to connect to 563807000000100000000000:\2fa390ff58558b49c45bf204dfa5717f ZTI ERROR - Non-zero return code by ZTIConnect,
    rc = 1 Command line returned 1. The operating system reported error 1: Incorrect function.
    Warning Milestone POK 7/22/2014 4:11:46 PM MININT-P6E4T6G Task Sequence Engine 11138 The task sequence execution engine ignored execution failure of the action (Request State Store) in the group (State Restore).
    Error Milestone POK 7/22/2014 4:11:46 PM MININT-P6E4T6G Task Sequence Engine 11135 The task sequence execution engine failed executing the action (Request State Store) in the group (State Restore) with the error code 16389 
    Action output: ... etting Media Certificate. Sending request to MP
    http://abcdefg.xyx.xyz.local. Setting message signatures. Setting the authenticator. CLibSMSMessageWinHttpTransport::Send: URL: abcdefg.xyx.xyz.local:80  CCM_POST /ccm_system/requestRequest was successful. migInfoRequestMessage.DoRequest (m_sResponse,true),
    HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\osdsmpclient\smpclient.cpp,1098) pClientRequestToMP->DoRequest(), HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\osdsmpclient\smpclient.cpp,2778) ExecuteRestoreRequestToMP(migInfoFromMP),
    HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\osdsmpclient\smpclient.cpp,2903) ExecuteRestoreRequest(), HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\osdsmpclient\main.cpp,84) OSDSMPClient finished: 0x00004005 reply from server
    is 'NoReply' ClientRequestToMP::DoRequest failed (0x80004005). ExecuteRestoreRequestToMP failed (0x80004005). ExecuteRestoreRequest failed (0x80004005).. The operating system reported error 1: Incorrect function.

  • How can I stop a task sequence if a custom HTA preflight check fails?

    In our currently deployment method, we launch an HTA program before initiating the OSD process. This is only when run from the RAP menu, not via PXE.  When a user initiates OSD through that menu, they get a message prompting them to close Outlook, and
    a countdown of 5 mins, then OSD starts.  They also have the ability to click on an 'OK' button to proceed on their own.
    I've created a new script which checks WMI if Outlook and/or OCS are open, and if the machine is running on battery, spit out a "Failed" response and stop the HTA.  I've also added a "recheck" button to re-do the check, and an 'OK
    button if people jsut want to continue.  
    I'm curious if there is a way to prevent the task sequence from continuing if any of those conditions arent met.  Currently it just pops up and says "Failed, Cannot conitue", but if they close the window, the task sequence thinks the program
    has run, and the OSD migration starts.  I'd like to be able and get the script to cancel the OSD process if a check fails.
    Has anyone had success with this, using WINXP? I'd use the MS pre-flight check but it's only for WIN7.

    Interesting. Thanks for the response.  Is there anybody out there that can assist with VBS part of the solution?
    Here's the code I'm working with.  Currently the battery piece isnt working as it should but I can figure that our, eventually.  I'd like to get Jason's proposed solution in the code.  If this isn't the right place, I'll take this somewhere
    else.
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>OSD Preflight checks</title>
    <HTA:APPLICATION
    APPLICATIONNAME="OSD Preflight checks"
    ID="objOSDPreReqChecks"
    SCROLL="no"
    CONTEXTMENU="no"
    SINGLEINSTANCE="no"
    MAXIMIZEBUTTON="no"
    MINIMIZEBUTTON="no"
    WINDOWSTATE="normal"/>
    <!-- #region STYLEs-->
    <style type="text/css">
    H1{color:Black;text-align:center;font-family: Arial, Helvetica, sans-serif;font-size: 26px;}
    p{font-family:"Arial";font-size:10px;}
    fail{color:Red;text-align:center;}
    .Version {float:left; font-size:1.0em;font-style:italic;color:#888888;font-weight:bold;}
    .Header1 {width: 180px; text-align: right;font-weight:bold;}<!-- '1st column heading -->
    H2 {font-family: Arial, Helvetica, sans-serif; text-align: center;}
    H3 {font-style: italic;}
    .style2 {width: 180px; text-align: left;}
    .Header2 {width: 150px; text-align: right;font-weight:bold;}<!-- '2nd column heading -->
    .style4 {width: 410px; text-align: left;}
    .StatusBar
    font-family: Arial, Helvetica, sans-serif;
    text-align: center;
    .hidden {display: none; visibility: hidden;}
    </style><!-- #endregion -->
    </head>
    <script language="VBScript" type="text/vbscript">
    '======================================================================================
    ' Script
    ' Version
    ' Purpose To check a machine is suitable for taking an OS deployment
    '======================================================================================
    'Features
    ' Modular design
    ' Verbose "Debug Mode"
    ' In-built data validation
    ' Custom error handling
    ' Custom error codes - 90x0
    ' Generic WMI handler
    'BUGfix: Change CLng to CDbl to avoid overflow (in GetRAM)
    'fixed - moved head section to top to become head > script > body
    'fixed - fCheckModel display with leading ,
    'fixed - fgetmodels dictionary list
    Option Explicit
    ' #region GLOBAL DECLARATIONS: Persistent fold region
    '======================================================================================
    'GLOBAL Vars
    'Things to just display (in GUI)
    Dim strRAM
    Dim strCPUInfo
    Dim strCPUName
    Dim strCPUDesc
    Dim iCPUCount
    Dim iCPUCoreCount
    Dim iRAM
    Dim strBIOSver, strBIOSDate, strBIOSInfo
    'Time related
    Dim TimerInterval 'timer to refresh HTA at start
    Dim iTimer 'abort timer
    Const iAbortTimeout=300000 'delay before window closes (in milliseconds)
    Dim pbTimerID
    Dim pbHTML
    Dim pbWaitTime
    Dim pbHeight
    Dim pbWidth
    Dim pbBorder
    Dim pbUnloadedColor
    Dim pbLoadedColor
    Dim pbStartTime
    'Dictionary
    Dim objModelsDict,colKeys,strKey 'models
    Dim objApprovedMakesDict
    'Misc GLOBAL vars
    Dim blnDebug 'set TRUE to trigger debug mode
    Dim bAbortBuild 'Boolean flag to abort or not abort
    Dim strTemp 'throwaway/scratch
    Dim strNamespace 'wmi default namespace for ANY machine
    Dim strComputer 'wmi reference to current machine, just .
    Dim strService 'WMI service
    Dim strQuery 'custom WQL
    Dim ErrMsg 'custom error messages
    Dim iErrMode 'State machine for error mode
    Dim lFlags 'WMI flag
    Dim strDisks
    'Pre-requisites - things that will cause build to abort if values do not meet spec
    Dim strHTAVendor 'Make of hardware
    Dim strHTAVendorState
    Dim strHTAModel 'Model of hardware
    Dim strHTAModelState 'Model state
    Dim strHTARAM 'RAM
    Dim strHTARAMState 'RAM state
    Dim strHTACPUSpeed 'Processor speed
    Dim strHTACPUCores 'Number of cores
    Dim strHTACPUFullInfo 'CPU + cores
    Dim strHTAHDD 'Disk info
    Dim strHTAHDDState 'Disk state
    Dim strHTACheckRAW 'NTFS check
    Dim strHTAArchitecture 'Processor support
    Dim strHTAProduct 'Product ID
    Dim strHTAOutlook 'Outlook running
    Dim strHTAOutlookState 'Outlook state
    Dim strHTABattery 'Battery check
    Dim strHTABatteryState 'Battery state
    'for WQL filters
    Dim strWQLPCInfo 'Pre-req - (1) for various inc. domain role (servers)
    Dim strWQLRAM 'Pre-req - (2) RAM
    Dim strWQLCPU 'Pre-req - CPU speed string (not int)
    Dim strWQLBootOrder 'Pre-req - Boot order string
    Dim strWQLSATAMode 'Pre-req - HDD mode
    Dim strWQLGenericBIOS
    Dim strWQLCPUCount 'Pre-req - how many CPUs
    Dim strWQLCPUInfo
    Dim strWQLFSType 'Pre-req - Check HDD not RAW (i.e. is NTFS)
    Dim strWQLDisks 'Disks
    Dim strWQLChassis 'Machine type
    Dim strWQLID 'Unique code from OEM
    Dim strWQLProc 'is Outlook running = False
    Dim strWQLBattery 'is on Battery = False
    'State
    Const cProblem = " Problem!"
    Const cRunAgain =" RunCheck: Run System Check Again"
    Const cSuccess = " Success!"
    Const cPassed=" Pass"
    Const cFail=" Fail"
    'Pre-requisite to check: SET VALUES HERE vvvvvvvvvvvvvvvv
    Const cApprovedOEM="Hewlett-Packard"
    Const LegacyOEM1="Dell Inc."
    Const LegacyOEM2="IBM"
    Const cMinimumMemoryMB = 1000 'RAM in MB
    'Const cMinimumMemoryMB = 1000000 'force fail test data RAM in MB
    Const cMinFS="NTFS"
    ' Const cMinFS="HPFS" 'force fail test data
    Const iMinCores=1
    'Const iMinCores=10099 'force fail cores test data
    Const iMinCPUSpeed=2 '20 'in GHz
    'Const iMinCPUSpeed=90000 'in GHz
    Const iMinCPUArch=32
    'Const iMinCPUArch=64
    ' #endregion
    ' To hide anything use ID.className = "hidden", to show set to "", e.g. NotFoundArea.className = "hidden"
    Sub Window_Onload
    Err.Clear
    VersionSpan.InnerText = objOSDPreReqChecks.Version 'Get version
    self.focus
    self.moveTo 100,100 'Move window top left
    StatusBar.InnerText="Validating machine..."
    document.body.style.cursor = "wait" 'hourglass cursor
    'Call PreflightChecks 'use for testing as a VBS only, otherwise HTA timer will call below
    TimerInterval = window.setInterval("PreflightChecks",10)
    End Sub
    Function PreflightChecks
    ' #region HEADER NOTES: Persistent fold region
    'Version history
    'ver 5 OCTOBER 2011 - added error handler
    'ver 3rd Nov - removed HPonly queries
    '// Solution: Custom Script for use with MDT - Adapted from hardwareinfo.vbs Mikael Nystrom – http://deploymentbunny.com
    'Typical BIOS content
    'Processor Speed = 2133/1066 MHz
    'Boot Order = Network Controller,ATAPI CD-ROM Drive,USB device,Hard Drive,Diskette Drive,PnP Device #2,PnP Device #3,PnP Device #4,PnP Device #5,PnP Device #6,PnP Device #7,PnPe #8,PnP Device #9,PnP Device #10,PnP Device #11
    'SATA (disk) mode: *IDE,--,RAID,-- or IDE,*AHCI,RAID
    'On Error Resume Next
    ' #endregion
    ' #region CONSTANTS: Persistent fold region
    '======================================================================================
    'Fields available in HP BIOS
    Const sAsset = "Notebook Asset Tag"
    Const sOwner = "Notebook Ownership Tag"
    Const sMan = "Manufacturer"
    Const sNoteModel = "Notebook Model"
    Const sCPU = "Processor Type"
    Const sCPUSpeed = "Processor Speed"
    Const sRAM = "Memory Size"
    Const sModel = "Product Name"
    Const sBIOSName ="System BIOS"
    Const sBIOSVer = "BIOS Version"
    Const sBIOSDate = "BIOS Date"
    'Other BIOS stuff you could use too
    'Const sOwnerTag = "Enter Ownership Tag"
    'Const sBIOS = "PCID"
    'Const sBIOS = "Define Custom URL"
    'Const sBIOS = "Set Alarm Time"
    'Const sBIOS = "PCID Version"
    Const TextMode="1" 'text case sensitive for dict obj
    'WMI core constants
    Const wbemFlagReturnImmediately = 16 'wmi - Causes the call to return immediately.
    Const wbemFlagForwardOnly = 32 'wmi - Causes a forward-only enumerator to be returned.
    'Forward-only enumerators are generally much faster and
    'use less memory than conventional enumerators, but don't allow calls to SWbemObject.Clone_
    'Advisory config values - as in "you want to the change these"
    Dim strHTABootOrder
    Dim strHTASATAMode
    'Dim strHTACPU
    ' #endregion
    '======================================================================================
    ' #region WQL: Persistent fold region
    lFlags = wbemFlagReturnImmediately + wbemFlagForwardOnly
    'Queries of things to check (HP)
    strWQLBootOrder = "select Name, value from HP_BIOSSetting where Name='Boot order'"
    strWQLSATAMode = "select Name, value from HP_BIOSSetting where (Name='SATA emulation' or name='SATA device mode')"
    strWQLDisks ="SELECT * FROM Win32_DiskDrive where mediatype like 'Fixed%hard disk%'" 'win32_disk only avail after W7
    strWQLFSType ="SELECT * from Win32_LogicalDisk where DriveType='3'" 'only bother with HDDs
    'Generic WMI query strings
    strWQLGenericBIOS="SELECT Manufacturer,SMBIOSBIOSVersion,ReleaseDate FROM Win32_BIOS WHERE PrimaryBIOS = True"
    strWQLCPUCount= "SELECT NumberOfProcessors,NumberOfLogicalProcessors from Win32_ComputerSystem"
    strWQLCPUInfo="SELECT Name,DataWidth,description,MaxClockSpeed,NumberofCores,NumberOfLogicalProcessors from Win32_Processor"
    strWQLPCInfo="SELECT Domain,DomainRole,SystemType,Manufacturer,Model,TotalPhysicalMemory FROM Win32_ComputerSystem"
    ' strWQLPCInfo="SELECT Domain,DomainRole,SystemType,Manufacturer FROM Win32_ComputerSystem"
    strWQLChassis="SELECT ChassisTypes from Win32_SystemEnclosure"
    strWQLID="SELECT IdentifyingNumber,UUID from Win32_ComputerSystemProduct"
    strWQLRAM="SELECT * FROM Win32_PhysicalMemory"
    strWQLProc="SELECT * FROM Win32_Process"
    strWQLBattery="SELECT * FROM BatteryStatus Where Voltage > 0"
    ' #endregion
    ' #region MAIN algorithm
    '=====================================================================================================
    ' MAIN
    'Algorithm
    '1) Check make (vendor)
    '2) Check model (in list)
    '3) Check RAM >x
    '4) Check HDD TYPE (HDD is not RAW)
    '5) Check CPU architecture
    '6) Check outlook
    '7) Check battery
    '=====================================================================================================
    'Initialise
    window.clearInterval(TimerInterval) 'Reset timer to 0
    ' blnDebug=True
    blnDebug=False
    bAbortBuild=False 'default to DON'T abort
    ' bAbortBuild=True
    'Build list of approved vendors
    Set objApprovedMakesDict = CreateObject("Scripting.Dictionary")
    objApprovedMakesDict.comparemode=VBTextCompare
    objApprovedMakesDict.add cApprovedOEM,"OK"
    objApprovedMakesDict.add LegacyOEM1,"OK"
    objApprovedMakesDict.add LegacyOEM2,"OK"
    objApprovedMakesDict.add "Lenovo","Testdata"
    If blnDebug Then Stop
    '1) all machines check make
    strHTAVendor=fCheckVendor(strWQLGenericBIOS) 'check vendor in BIOS - if vendor not approved ABORT without proceeding
    If bAbortBuild=True Then
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - goodbye cruel world"
    iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
    Else
    StatusBar.InnerText="Vendor: " & strHTAVendor & vbTab & " " & strHTAVendorState
    '2) Discover current Model
    strHTAModel=fGetModelName(strWQLPCInfo) 'get model name from WMI
    strHTAModel=fUniversalCheckData(strHTAModel,"'Discover Model - fGetModelName'") 'validate
    Call fGetModels 'get list of all valid models (from text file)
    strHTAModel=fCheckModel(strHTAModel)
    '2a) Model number (optional)
    strHTAProduct=fGetComputerSystemProdIDNumber(strWQLID) 'manufacturer's product ID
    strHTAProduct=fUniversalCheckData(strHTAProduct,"'Discover ID - fGetComputerSystemProdIDNumber'")
    ' StatusBar.InnerText=StatusBar.InnerText & VbCrLf & vbTab & "Product Code: " & vbTab & strHTAProduct
    '3) Check installed Memory
    strHTARAM=fGetRAM(strWQLRAM) 'find RAM size
    strHTARAM=fUniversalCheckData(strHTARAM,"'Detect RAM - fCheckRAM'")
    strHTARAM=fCheckRAM(strHTARAM) 'check RAM meets req
    If strHTARAMState=cFail Then Exit Function
    '4) Disk format IS NTFS
    strDisks=fGetDrives(strWQLFSType) 'Get formatting info for all drives
    strHTACheckRAW=fUniversalCheckData(strDisks,"'Detect filesystem - fCheckNTFS'") 'Validate data
    strHTACheckRAW=fCheckNTFS(strDisks) 'Check FS format is acceptable (not RAW)
    If strHTACheckRAW=cFail Then Exit Function
    'Generic CPU calls
    strHTACPUFullInfo="CPUs:" & fGetCPUInfo(strWQLCPUInfo) & " with CPU cores:" & iCPUCoreCount
    strBIOSInfo="BIOS version: " & strBIOSver & ", dated " & strBIOSDate
    '5a) CPU Speed check (info from http://www.robvanderwoude.com/wmiexamples.php)
    strCPUInfo=WMI(strWQLCPUInfo,strNamespace) 'Get CPU details
    strTemp=split(strCPUInfo,"@"): strHTACPUSpeed=strTemp(1)
    strHTACPUSpeed=fUniversalCheckData(strHTACPUSpeed,"'Check processor - fCheckCPUSpeed'") 'Validate data
    strHTACPUSpeed=fCheckCPUSpeed(strHTACPUSpeed) 'Check CPU clock speed
    '5b) cores check
    strHTACPUCores=fUniversalCheckData(iCPUCoreCount,"Check core count - fCheckCores") 'Validate data
    iCPUCoreCount=fCheckCores(iCPUCoreCount) 'pass or fail?
    '5c) CPU address width
    strHTAArchitecture=fUniversalCheckData(strHTAArchitecture,"Check core count - fCheckCores") 'Validate data
    strHTAArchitecture=fCheckCPUArch(strHTAArchitecture)
    '6) Check outlook
    strHTAOutlook=fCheckProcess(strWQLProc)
    '7) Check Battery
    strHTABattery=fCheckBattery(strWQLBattery)
    'end checkss
    document.body.style.cursor = "default"
    'Display hardware values in GUI (in table)
    Vendor.innerhtml = strHTAVendor 'Use str...var..STATE if you want Pass/fail text instead
    Model.innerhtml = strHTAModel
    Product.innerhtml = strHTAProduct
    RAM.innerhtml = strHTARAM
    CPUspeed.innerhtml = strHTACPUSpeed
    CPUInfo.innerhtml = strHTACPUFullInfo
    HDDFS.innerhtml = strHTACheckRAW
    CapableArchitecture.innerhtml=strHTAArchitecture
    BIOSversion.innerhtml = strBIOSver
    BIOSDate.innerhtml = strBIOSDate' CPUName.innerhtml = strCPUDesc 'GetCPUName
    End If
    '======================================================================================
    ' #endregion
    End Function
    'generic WMI queries, by field and namespace
    Function WMI(strQuery,strNameSpace)
    'Aim: generic WMI calls
    'return value of BIOS
    On Error Resume Next
    Dim colItems,objItem
    Dim objWMI
    Const strService = "winmgmts:{impersonationlevel=impersonate}//" 'binding to WMI
    Const strComputer = "." 'this machine
    Set objWMI = GetObject(strService & strComputer & strNamespace) 'GLOBAL wmi
    Set colItems = objWMI.ExecQuery(strQuery,,lFlags)
    For Each objItem In colItems
    If Err Then
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "WMI query: " & strQuery & " in " & strNamespace & objItem.Name
    Call ErrHandler("WMI error " & strQuery,1)
    Else
    WMI=objItem.Name 'Return value
    End If
    Next
    End Function
    Function fGetModelName(strWQLPCInfo)
    'Aim: Get model name from BIOS - WMI field sometimes varies if laptop, so try two
    'Return STRING: Model string from BIOS or "UNKNOWN" if null
    On Error Resume Next
    Dim colPCInfo,objPCItem
    Dim strModel
    Set colPCInfo = GetObject("winmgmts:").ExecQuery(strWQLPCInfo,"WQL",lFlags)
    If Err Then
    Call ErrHandler("fGetModelName: Error querying WMI " & strWQLPCInfo,2)
    Else
    For Each objPCItem In colPCInfo
    If Not IsNull(objPCItem.Model) Then
    strModel=objPCItem.Model
    ' iRAM=objPCItem.TotalPhysicalMemory
    Else
    If (strHTAVendor=cApprovedOEM And IsLaptop = True) Then ' resort to HP specific query for older laptops
    'Notebook
    strModel=QueryHPBIOS(sNoteModel)
    if strModel="" then strModel=QueryHPBIOS(sModel) 'try alt value
    Else
    strModel=QueryHPBIOS(sModel)
    End If
    End If
    Next
    End If
    If strModel = "" Then
    fGetModelName = "UNKNOWN"
    Model.style.visibility="hidden"
    Else
    fGetModelName=strModel
    End If
    End Function
    '====================================================
    '====================================================
    Function fGetRAM(strQuery)
    'Aim: get RAM installed. NB Win32_ComputerSystem::TotalPhysicalMemory may not be accurate
    'Return integer
    On Error Resume Next 'equiv to Err.Clear
    Dim colItems, item
    Dim iTotalMemory
    Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
    If Err Then
    Call ErrHandler("fGetRAM: Error querying " & strQuery,2)
    Else
    iTotalMemory = 0
    For Each item In colItems
    iTotalMemory = iTotalMemory + CDBL(item.Capacity)/(1024^2)
    Next
    End If
    If iTotalMemory = "" Then
    fGetRAM = "RAM UNKNOWN"
    RAM.style.visibility="hidden"
    Else
    fGetRAM=iTotalMemory
    End If
    End Function
    '====================================================
    '====================================================
    Function fGetCPUInfo(strQuery)
    'Aim: query WMI for CPU info - number and number of cores
    'Return: function=CPU count, var for the cores: iCPUCoreCount, strHTAArchitecture, strCPUDesc
    On Error Resume Next
    Dim colItems, objItem
    Dim NumberOfProcessors
    Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
    If Err Then
    Call ErrHandler("GetCPUInfo: Error querying " & strQuery,2)
    Else
    For Each objItem In colItems
    If Err Then
    Else
    If Not IsNull(objItem.NumberOfCores) Then
    NumberOfProcessors = Trim(objItem.NumberOfCores) 'NumberOfProcessors
    End If
    If Not IsNull(objItem.NumberOfLogicalProcessors) Then
    iCPUCoreCount = Int(Trim(objItem.NumberOfLogicalProcessors))
    End If
    If Not IsNull(objItem.DataWidth) Then
    strHTAArchitecture=Trim(objItem.DataWidth) & "-bit"
    End If
    If Not IsNull(objItem.description) Then
    strCPUDesc = Trim(objItem.description) 'cpu name
    End If
    End If
    Next
    If NumberOfProcessors = "" Then
    NumberOfProcessors = "UNKNOWN"
    End If
    fGetCPUInfo = Int(NumberOfProcessors)
    ' iCPUCoreCount = Int(NumberOfLogicalProcessors)
    End If
    End Function
    '====================================================
    '====================================================
    Function fGetComputerSystemProdIDNumber(strWQLID)
    'Aim: Get UUID from Win32_ComputerSystemProduct
    'Return: great big integer
    Dim colSys,objSys
    Dim strUUID
    On Error resume next
    Set colSys = GetObject("winmgmts:").ExecQuery(strWQLID,"WQL",lFlags)
    If Err then
    Call ErrHandler("fGetComputerSystemProdIDNumber: Error querying " & strWQLID,2)
    Else
    For Each objSys In colSys
    If Not IsNull(objSys.IdentifyingNumber) Then
    strUUID = Trim(objSys.IdentifyingNumber)
    End If
    Next
    If strUUID = "" Then
    fGetComputerSystemProdIDNumber = "UNKNOWN"
    Else
    fGetComputerSystemProdIDNumber = strUUID
    End If
    End If
    End Function
    '=================================================================================
    '=================================================================================
    Function fGetDrives(strQuery)
    Dim colDisks,objHDD
    Dim strDriveType, strDiskSize, strDisk
    Dim strDiskFSType
    Dim iGBUnits
    On Error Resume Next
    iGBUnits=1073741824
    Dim iRAW
    iRAW=0
    Set colDisks = GetObject("winmgmts:").ExecQuery(strQuery)
    For Each objHDD In colDisks
    Select Case objHDD.DriveType
    Case 1 strDriveType = "Drive could not be determined."
    Case 2 strDriveType = "Removable Drive"
    Case 3 strDriveType = "Local hard disk."
    Case 4 strDriveType = "Network disk."
    Case 5 strDriveType = "Compact disk (CD)"
    Case 6 strDriveType = "RAM disk."
    Case Else strDriveType = "Drive type Problem."
    End Select
    strDiskFSType = objHDD.FileSystem
    'Find C
    If objHDD.Name="C:" Then
    If isNull(objHDD.FreeSpace) Then
    If blnDebug=True then Call ErrHandler("ALERT!! Volume " & objHDD.Name & "is RAW",1) 'Abort/clean
    fCheckDrives="ALERT!! Volume " & objHDD.Name & "is RAW"
    End If
    End If
    strDiskSize = Int(objHDD.Size /iGBUnits) & "GB" 'calc size of disk
    strDisk = strDisk & VbCrLf & "Vol " & objHDD.Name & " (" & strDriveType & ") size: " & strDiskSize & " (free: " & Int(objHDD.FreeSpace /iGBUnits) & "GB), " & strDiskFSType
    fGetDrives=strDisk
    Next
    If (Err.Number <>0) Then
    Call ErrHandler("WMI Property Query Error: [" & Err.Number & "]",2)
    fGetDrives = -1
    Exit Function
    End If
    End Function
    '=================================================================================
    '=================================================================================
    Function fUniversalCheckData(varData,strStage) 'template
    'Aim: Check value passed...
    'is not blank
    'is in range x..y
    'spelt OK
    'is in a list
    'format is text, numeric
    'return: string: the original value
    On Error Resume Next
    Dim Err
    if blnDebug Then StatusBar.InnerText = StatusBar.InnerText & VbCrLf & "Validating " & strStage & " data..."
    If Err Then
    Call ErrHandler("WARNING: Error discovering value in " & strStage,2) '1=Quit,2=Warn
    strHTAModel="Unknown"
    Else
    Select Case varData
    Case IsEmpty(varData) Or IsNull(varData)
    Call ErrHandler("WARNING: Error in "& strStage,2) '1=Quit,2=Warn
    fUniversalCheckData="Unknown"
    Case IsNumeric(varData)
    If varData<0 Then
    Call ErrHandler("WARNING: Value negative"& strStage,2) '1=Quit,2=Warn
    fUniversalCheckData="Unknown"
    End if
    ' & varData &
    Case IsDate(varData)
    Case Else
    fUniversalCheckData=varData 'Data OK - return value unchanged
    End Select
    End If
    End Function
    '=================================================================================
    'Checks - follow if true DO, if false warn/abort
    '=================================================================================
    Function fCheckBattery(strQuery)
    'Aim: Find if battery is running
    'Return pass/fail
    On Error Resume Next 'equiv to Err.Clear
    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20
    Dim colItems, item
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM BatteryStatus Where Voltage > 0", "WQL", _
    wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each item In colItems
    if objItem.PowerOnline = True Then
    strHTABattery=objItem.PowerOnline
    strHTABatteryState = cFail
    Err.Raise 9010,"fCheckBattery",strHTABattery & " Laptop running on battery. OSD Cannot continue."
    Call ErrHandler(ucase(strHTABatteryState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Laptop on Battery. Please plug into an outlet before proceeding."
    iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
    Else
    strHTABatteryState = cPassed
    End if
    Next
    fCheckBattery=strHTABattery
    End Function
    '====================================================
    Function fCheckProcess(strQuery)
    'Aim: Find if outlook is running
    'Return pass/fail
    On Error Resume Next 'equiv to Err.Clear
    Dim colItems, item
    Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
    For Each item In colItems
    if item.Name = "OUTLOOK.EXE" Then
    strHTAOutlook=item.Name
    strHTAOutlookState = cFail
    Err.Raise 9010,"fCheckOutlook",strHTAOutlook & " running. OSD Cannot continue."
    Call ErrHandler(ucase(strHTAOutlookState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Outlook Running, please close outlook before proceeding."
    iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
    Elseif item.Name = "communicator.exe" Then
    strHTAOutlook=item.Name
    strHTAOutlookState = cFail
    Err.Raise 9010,"fCheckOutlook",strHTAOutlook & " running. OSD Cannot continue."
    Call ErrHandler(ucase(strHTAOutlookState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Communicator Running, please close OCS before proceeding."
    iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
    Else
    strHTAOutlookState = cPassed
    End if
    Next
    fCheckProcess=strHTAOutlook
    End Function
    '====================================================
    '1 - Make
    Function fCheckVendor(strVendor)
    'Aim: Check make is one the OS/build is designed For
    'Return: STRINGS for "Make", BIOS version and BIOS date (generic): strHTAVendorState pass or fail
    On Error Resume Next
    Dim colItems,objItem
    Set colItems = GetObject("winmgmts:").ExecQuery(strVendor, "WQL", lFlags)
    For Each objItem In colItems
    strHTAVendor=objItem.Manufacturer
    if objApprovedMakesDict.exists(strHTAVendor) then
    strBIOSver=objItem.SMBIOSBIOSVersion
    strBIOSDate=Mid( objItem.ReleaseDate, 5, 2 ) & "/" & Mid( objItem.ReleaseDate, 7, 2 ) & "/" & Left( objItem.ReleaseDate, 4 )
    strHTAVendorState=cPassed
    Else
    strHTAVendorState=cFail
    Err.Raise 9010,"fCheckVendor",strHTAVendor & " found. The build will not work on this make of hardware"
    Call ErrHandler(ucase(strHTAVendorState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
    bAbortBuild=True
    end if
    Next
    fCheckVendor=strHTAVendor
    End Function
    '=================================================================================
    '=================================================================================
    '2 - Models check
    Function fCheckModel(strThisModel)
    'Aim Check target machine is in list of models
    'Return string
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking model..." & VbCrLf
    If objModelsDict.exists(trim(strThisModel)) then ' if current model in objDict then huzzah
    strHTAModelState=cPassed
    StatusBar.InnerText=StatusBar.InnerText & vbTab & "Model detected: " & vbTab & strHTAModelState
    Else
    strHTAModelState=cFail
    Err.Raise 9010,"fCheckModel",strThisModel & " found. The build will not work on this model of hardware"
    Call ErrHandler(ucase(strHTAModelState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
    end if
    fCheckModel=strHTAModel
    End Function
    '=================================================================================
    '=================================================================================
    '3 - RAM
    Function fCheckRAM(strRAM)
    'Aim: Check installed RAM > x
    'Return string digits with units, e.g. 4GB
    'use strHTARAM for value
    '==================================================================
    ' Memory Preflight Check (from MDT2012)
    '==================================================================
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking RAM..."
    If Err.Number <> 0 Then
    Call ErrHandler("Error occurred while calculating computer's memory.",2)
    End If
    fCheckRAM = Int(strRAM/1024) & "GB" 'format in GB
    If Int(strRAM) > cMinimumMemoryMB Then
    strHTARAMState=cPassed 'Sufficient memory - show whole number in GB"
    StatusBar.InnerText=StatusBar.InnerText & vbTab & "RAM installed: " & vbTab & strHTARAMState
    Else
    strHTARAMState=cFail
    Err.Raise 9030 ,"fCheckRAM","Not enough memory in this machine!" & " Required physical memory is: " & cMinimumMemoryMB & " MB."
    Call ErrHandler(ucase(strHTARAMState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'abort build
    End If
    End Function
    '=================================================================================
    '=================================================================================
    '4 - NTFS disk
    Function fCheckNTFS(strDiskFS)
    'Aim: Check HDD is NTFS
    'Return string
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking file system is not RAW..."
    If Instr(1,strDiskFS,cMinFS,VBTextCompare)<>0 Then
    fCheckNTFS=cMinFS 'disk format is OK (NTFS)
    StatusBar.InnerText=StatusBar.InnerText & vbTab & " File system: " & cPassed
    Else
    fCheckNTFS=cFail
    Err.Raise 9040 ,"fCheckNTFS","WARNING: Disk not correct file-system. Type required is: " & cMinFS & "." & VbCrLf & _
    "The deployment will fail unless you reformat the target disk immediately."
    Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",2) 'halt build
    End If
    End Function
    '====================================================
    '=================================================================================
    '5 - CPU checks
    '=================================================================================
    Function fCheckCPUSpeed(strCPU) 'any HW
    'Aim: Check CPU speed
    'Return string = number + appropriate units, e.g. 5HGz (strCPU)
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU spec..."
    Select Case Right(strCPU,3) 'check units
    Case "MHz"
    strCPU=Left(strCPU,4)/1000 'reformat to GHz
    Case "GHz"
    strCPU=strCPU 'unit already OK
    Case Else
    Call ErrHandler("CPU units are unknown",2)
    End Select
    'Check clock speed
    If Int(Left(trim(strCPU),1))>=iMinCPUSpeed Then
    fCheckCPUSpeed=strHTACPUSpeed 'CPU is fine i.e don't change value
    StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU Speed: " & cPassed
    Else
    fCheckCPUSpeed=cFail 'already in GHz
    Err.Raise 9050,"fCheckCPUSpeed","CPU speed pre-requisite failed. Minimum processor clock speed is: " & iMinCPUSpeed
    Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'halt build
    End If
    End Function
    '=================================================================================
    '=================================================================================
    Function fCheckCPUArch(strCPUArch) 'any HW
    'Aim: Check CPU width
    'Return string
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU bus width..."
    'Check clock speed
    If Int(Left(trim(strCPUArch),2))>=iMinCPUArch Then
    fCheckCPUArch=strHTAArchitecture 'CPU is fine i.e don't change value
    StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU width: " & cPassed
    Else
    fCheckCPUArch=cFail 'already in GHz
    Err.Raise 9052,"fCheckCPUArch","CPU width pre-requisite failed. Minimum processor width required is: " & iMinCPUArch
    Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'abort build
    End If
    End Function
    '=================================================================================
    Function fCheckCores(iCores)
    'Aim: Check hardware (CPU) has a minimum number of cores
    'Return Integer
    On Error Resume Next
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU cores..."
    If iCores>=iMinCores Then
    fCheckCores=iCores
    StatusBar.InnerText=StatusBar.InnerText & vbTab & "Core count: " & vbTab & cPassed
    'StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU cores: " & cPassed
    Else
    fCheckCores=cFail
    Err.Raise 9051,"fCheckCores","WARNING: Not enough cores on the CPU to support the build. Minimum CPU cores is: " & iMinCores
    Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",2) 'halt build
    End If
    End Function
    '=================================================================================
    '=================================================================================
    Function fCheckHPCPUSpeed 'HP ONLY
    'Aim: Check CPU speed
    'return: string
    'Check CPU speed
    On Error Resume Next
    strWQLCPU = "processor speed"
    strTemp=QueryHPBIOS(strWQLCPU,"")
    Select Case Right(strTemp,3)
    Case "MHz"
    strTemp=Left(strTemp,4)/1000 'reformat to GHz
    Case "GHz"
    strTemp 'is OK
    Case Else
    Call ErrHandler("CPU is unknown",2)
    End Select
    'Check clock speed
    If strTemp>=iMinCPUSpeed Then
    fCheckCPUSpeed= strTemp & "GHz"
    Else
    Err.Raise 9050,,"CPU speed pre-requisite failed"
    Call ErrHandler("CPU is too slow",1)
    fCheckCPUSpeed=cFail 'already in GHz
    End If
    End Function
    '=================================================================================
    '=================================================================================
    Function fGetModels
    'Aim: Read external text file
    'return: dictionary object - models as key, integer as value e.g. Dell Optiplex,12
    'On Error Resume Next
    Dim objFSO
    Dim objFile
    Dim strFile
    Dim strEntry
    Dim n
    Dim strfilepath
    Dim iLineCount 'count lines to avoid listing first item with ,.
    Set objModelsDict = CreateObject("Scripting.Dictionary")
    set objFSO=CreateObject("Scripting.FileSystemObject")
    Const ForReading=1
    strfilepath = Left(window.location.pathname,InStrRev(window.location.pathname,"\"))
    strFile=strfilepath & "Models.txt"
    set objFile=objFSO.OpenTextFile(strFile,ForReading)
    iLineCount=0
    'read in each line of data until you reach the end of the file
    do While objFile.AtEndOfStream<>True
    strEntry=objFile.ReadLine
    'you can now do what ever you want with the line as referenced with the strEntry variable such as
    'echoing it back (e.g. wscript.Echo strEntry) or passing it as a variable to a function of subroutine (e.g. MyFunction strEntry)
    objModelsDict.comparemode=VBTextCompare
    objModelsDict.Add strEntry,iLineCount
    iLineCount=iLineCount+1
    If blnDebug then
    If iLineCount=1 Then
    StatusBar.InnerText=trim(strEntry)
    Else
    StatusBar.InnerText=StatusBar.InnerText & ", " & trim(strEntry) 'list models
    End If
    End If
    Loop
    objFile.Close
    End Function
    '=================================================================================
    '=================================================================================
    '====================================================
    Function ErrHandler(strErrorMsg,iErrMode)
    'Aim: to handle error states
    ' 1 = Abort
    ' 2 = Warn
    'Return 'Appropriate text message explaining the error
    '====================================================
    Const msgTitle="SCCM Deployment Preflight Checklist"
    'On Error Resume Next '< don't use that as we want to KEEP the error properties
    'Abort=1
    If iErrMode=1 Then
    StatusBar.InnerText=strErrorMsg 'overwrite status with Error message
    ' StatusBar.InnerText=StatusBar.InnerText & VbCrLf & " " & strHTAOutlook & " " & strHTAVendor & " " & strHTAVendorState & _
    ' VbCrLf & " " & strHTAModel & strHTAModelState & _
    ' VbCrLf & " " & strHTARAM & strHTARAMState & _
    ' VbCrLf & " " & strHTAHDD & strHTAHDDState
    iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript") 'Abort (close) after n seconds
    'MsgBox strErrorMsg,vbExclamation,msgTitle
    'ErrBar.class=""
    ElseIf iErrMode=2 Then
    'Warning
    StatusBar.InnerText=StatusBar.InnerText & VbCrLf & strErrorMsg & " " '& "(" & Err.Description & " :" & Err.Number & ")"',vbExclamation,msgTitle
    Err.Clear
    End If
    End Function
    '====================================================
    Sub Abort
    'Aim: Quit gracefully
    window.close()
    End Sub
    </script>
    <!-- #region BODY -->
    <body>
    <br />
    <div>
    <span style="version"> <span id="VersionSpan"></span></div>
    <div style="text-align: center;">
    <H1 style="font-family: Arial, Helvetica, sans-serif; font-size: large; text-align: center; color: #000000; text-transform: capitalize">System information</H1>
    <span>
    <table border="1" cellspacing="0" cellpadding="0" style="width: 912px"
    id="SysInfoTable">
    <tr class="h1">
    <td align="right" class="Header1" style="width: 76px; height: 18px">
    </td>
    <td align="right" class="Header1" style="height: 18px"><em id="VendorCaption">Vendor</em></td>
    <td align="left" class="style2" style="height: 18px"><span id="Vendor"></span></td>
    <td align="right" class="Header2" style="height: 18px"><em id="ModelCaption">Model</em></td>
    <td align="center" class="style4" style="width: 400px; height: 18px"><span id="Model"></span></td>
    </tr>
    <tr>
    <td align="right" class="Header1" style="width: 76px">
    </td>
    <td align="right" class="Header1"><em id="ProductCaption">Product ID</em></td>
    <td align="left" class="style2"><span id="Product"></span></td>
    <td align="right" class="Header2"><em id="RAMCaption">Memory(in MB)</em></td>
    <td align="left" class="style4" style="width: 400px"><span id="RAM"></span></td>
    </tr>`
    <tr>
    <td align="right" class="Header1" style="width: 76px">
    </td>
    <td align="right" class="Header1"><em id="CPUCaption">CPU speed (in GHz)</em></td>
    <td align="left" class="style2"><span id="CPUspeed"></span></td>
    <td align="right" class="Header2"><em id="CPUInfoCaption">No: CPU\Cores</em></td>
    <td align="left" class="style4" style="width: 400px"><span id="CPUInfo"></span></td>
    </tr>
    <tr>
    <td align="right" class="Header1" style="width: 76px">
    </td>
    <td align="right" class="Header1"><em id="DiskFSCaption">Filesystem info</em></td>
    <td align="left" class="style2"><span id="HDDFS"></span></td>
    <td align="right" class="Header2"><em id="CapableArchCaption">Architecture</em></td>
    <td align="left" class="style4" style="width: 400px"><span id="CapableArchitecture"></span></td>
    </tr>
    <tr>
    <td align="right" class="Header1" style="width: 76px">
    </td>
    <td align="right" class="Header1"><em id="BIOSVerCaption">BIOS version</em></td>
    <td align="left" class="style2" ><span id="BIOSVERSION"></span></td>
    <td align="right" class="Header2"><em id="BIOSDateCaption">BIOS Date</em></td>
    <td align="left" class="style4" style="width: 400px"><span id="BIOSDate"></span></td>
    </tr>
    </table>
    </span>
    </div>
    <div class="StatusBar">
    <br />
    <Span id="StatusBar">Loading...please wait.</Span>
    </div> <br><br>
    <div align="center">
    <input type="button" name="btnStop" id="btnStop" value="Continue" onclick="Abort">
    <input type="Button" value="Re-Scan Machine" name="button1" onClick="Window_Onload" class="button">
    </div>
    </body><!-- #endregion -->
    </html>

  • MDT 2013: Wizard Pages by Task Sequence

    Hi,
    I believe what I am trying to do is not possible from previous readings on this forum, BUT then I see something in my MDT 2013 OSD wizard that seems to indicate there might be a way to get it done. So here goes.
    For my own demos, I am trying to develop a deployment share that is much like Johan Arwidmark's hydration kit. Some machines, like a domain controller or a SQL cluster are all well-defined: computer names, IP addresses, etc. are fixed and can be set
    in customsettings.ini or in the Task Sequence with variables. However, I would also like the ability to have to deploy a "generic" machine where I can select roles, applications, etc.
    This would require having different wizard pages shown for different task sequences. From what I've read, this may not be possible without developing a custom wizard (and that might be too much effort). However, I currently have two task sequences and depending
    on which one I select, I see a different number of steps to complete? See screenshots. I don't know what I have currently configured that makes it like that.
     (when I select "Domain Controller 01" task sequence) (Task sequence ID "DC01")
     (when I select the "generic" task sequence)
    Below is my customsettings.ini [the only rules file I have].
    [Settings]
    Priority=TaskSequence,Default
    [Default]
    _SMSTSORGNAME=Demo Deployment
    OSInstall=Y
    SkipCapture=YES
    SkipAdminPassword=YES
    AdminPassword=P@ssw0rd!
    SkipProductKey=YES
    SkipComputerBackup=YES
    SkipBitLocker=YES
    EventService=http://192.168.232.1:9800
    SkipUserData=YES
    SkipTaskSequence=NO
    SkipTimeZone=YES
    SkipBitLocker=YES
    SkipSummary=YES
    SkipFinalSummary=NO
    FinishAction=SHUTDOWN
    SkipLocaleSelection=YES
    HideShell=YES
    [DC01]
    _SMSTSORGNAME=DC01 Deployment
    SkipComputerName=YES
    OSDComputerName=DC01
    SkipDomainMembership=YES
    JoinWorkgroup=DEMO
    SkipRoles=YES
    I would expect the settings for task sequence "DC01" to be applied after I select that task sequence in the wizard. That doesn't seem to work. The first task in the sequence is a "Gather" task that gathers local data and processes customsettings.ini.
    I understand I can't override most settings from [Default] because they would have already been processed but as you can see, that's not what I am actually trying.
    I am not opposed to having multiple rules files if that would work. However, it seems like that doesn't make much difference when it comes to actually seeing different wizard steps active. I've tried adding a second customsettings_dc01.ini file and having
    a Gather step that specifically references that file in the "Initialize" group.
    I've considered some alternatives to making it work this way, such as having multiple deployment shares and "linking" them (although I haven't done this before) so I wouldn't have to copy all the applications.
    I would also set the computer name and all in the task sequence using variables, but that still doesn't address the problem.
    Any insight is appreciated,
    SA.

    SpeedBird186 - There are several assumptions going on here.
    1. by default MDT processes the CS.ini file *before* the wizard, and *after* the Task sequence has started. If you want CS.ini file to be processed just *after* you select your TS in the wizard, use Johan's trick above.
    2. There are about 20 different wizard pages, and they don't appear in *all* scenarios. the wizard framework will attempt to do an intelligent job of filtering out pages that are not relevant to the scenario at hand. For example, in the graphic above, you
    can see that the OS roles and Features page will appear/disappear. This can happen for example if the task sequence you selected earlier does or does *not* have a "OS Roles and Featrues" step in the Task sequence.
    3. For me, the easiest way to process roles would be to create some new "Applications" and to put them in a folder.
    Keith Garner - keithga.wordpress.com

  • Image not displaying in the Task Sequence Wizard. SCCM2012

    This is my question, so I will post the link here.
    http://community.spiceworks.com/topic/925727-image-not-displaying-in-the-task-sequence-wizard-sccm2012
    Bryan
    I captured an image from a PC that I am preparing to be deployed with Office 365. Once I captured
    the image, I went to the software library to add the operating system image. That seemed to go on without any issue, but when I look at the summary, I see the big yellow globe saying "in progress" it has not changed since yesterday afternoon.
    I then created the task sequence for this image
    to be deployed under Software Library, Task Sequences. When I selected the references tab, everything seemed to be in order with the exception of the "operating system image" under type. It was/is showing 0.0% Compliance.

    So, the problem described in the other forum post does not match the title of this thread. Are you trying to address two different things? These are unrelated btw.
    For the issue in the other thread, you'll have to troubleshoot your content distribution to the selected DP. The distmgr.log and pkgxfermgr.log (assuming you chose to distribute the image to a DP directly attached to your primary site) are the places to
    start and will show you exactly what's going on.
    As for the title of this thread, we'll need a lot more info to help you there.
    Finally, I would suggest you copy your questions from other sources into the thread -- this will help other folks in the future that may stumble upon this thread and will prevent any confusion.
    Jason | http://blog.configmgrftw.com | @jasonsandys

  • "Welcome to the Task Sequence Wizard" never shows on PXE boot, but does on Boot Media with prestart command

    Hey guys, I have a fairly odd situation here.  I have all OSD Task Sequence advertisements set to "PXE and Boot Media (hidden)" and all are optional
    (not mandatory).  I use a powershell form via prestart command to give the user a choice which limits what task sequences they choose.  When everything is working, this process works.  Unknown desktop-class systems see desktop task sequences,
    and server-class systems see server task sequences.
    Here's where it's different when I use different boot methods:
    Boot Media
    "Welcome to the Task Sequence Wizard" is presented.  User hits or clicks Enter.
    Powershell form is presented; user picks their task sequence
    Confirmation screen is presented with the task sequence they selected (this is an OSD screen the same size as the "Welcome to the Task Sequence Wizard"
    screen.
    Dependency check screen is shown with a progress bar.  If a package is missing from a DP, it will display an error here with the PackageID.  This
    looks the same as "Regular" OSD with standard non-hidden advertisements.
    PXE Boot
    "Welcome to the Task Sequence Wizard" is never displayed.
    Powershell form is the first screen they see.  They select it and it continues.
    No confirmation screen is presented if the system is known;  if it is an unknown system, a small dialog says there is a
    *mandatory* task sequence about to be run and it will run in 180 seconds.  Users can hit enter.
    No dependency check screen is shown; and if a package was missing, instead of presenting an error, it simply reboots.  However, if everything is there,
    the process starts successfully.
    While I have no problems with the first window never being displayed, not displaying the error dialog and simply rebooting is what is bothersome to me. 
    99% of our builds are from PXE boot.
    Again, these task sequences are all 100% optional, NOT mandatory, and I've double checked this multiple times.  Can anyone explain why we get different
    behavior between boot media and PXE boot?  Any way of getting PXE boot to "mimic" the Boot media behavior?
    I followed the guide here:
    http://www.mydreampage.net/2012/09/21/how-can-i-deploy-a-hidden-task-sequence-in-configuration-manager-2012-sp1/
    If you see the image here:
    http://www.windows-noob.com/forums/uploads/monthly_09_2012/post-1-0-29840100-1348236179.png
    You'll see the "Retrieving policy for this computer..." dialog box - I never get that with PXE - just Boot Media.
    Note that I am running 2012 R2, not 2012 SP1 - but I never got a chance to test this process with SP1.
    Upon further experimentation, the "hidden" task sequence has nothing to do with this.  If I change it to a normal, non-hidden advertisement, as
    long as the "prestart" command in the boot image is used, we don't get those missing dialog boxes at all, with PXE.

    Are both boot images the same for PXE and the boot media? Same package ID and all? 
    Boot media for us always shows the task sequence wizard first, while PXE always displays the pre-start command first. 
    Daniel Ratliff | http://www.PotentEngineer.com

  • SCCM 2012 MDT 2012 UDI Require domain credentials to run task sequence

    We are in the process of moving to SCCM 2012 integrated with MDT 2012 for OSD from using MDT 2012 by itself. We're trying out UDI task sequences and have noticed a pretty gaping hole in functionality vs MDT 2012 by itself: password protecting a task sequence.
    In MDT 2012 there was a built-in feature that required domain credentials to run a task sequence. If one exists using SCCM/MDT 2012, I haven't been able to find it. I've only found stuff like this http://www.windows-noob.com/forums/index.php?/topic/2336-password-protect-a-task-sequence/ which
    would allow you to set a password, but not authenticate against AD. So, I'm wondering if there are any options to protecting a task sequence with domain authentication?
    My understanding is that the Refresh and Replace StageGroup only run when you kick off a UDI task sequence in Windows. That means I have to make a task sequence available to the Configuration Manager Client in order for a tech to run a Refresh/Replace. And,
    that in turn means that the UDI task sequence will be visible to all users since it needs to be available to their computer. Or, am I completely missing how UDI OSD should flow?  If so, then I hope someone can correct me.
    I'd appreciate any help or advice you can give. Thanks. 

    Hi,
    I am sorry to say that you are correct in your conclusions. There is no builtin way in ConfigMgr/MDT/UDI to require a domain username/password to run a task sequence, your option from Windows-noob.com is one way of solving it.
    Regards,
    jörgen
    -- My System Center blog ccmexec.com -- Twitter
    @ccmexec
    Thanks for the info. What about workflow? How do you usually handle UDI in Replace and Refresh scenarios? Do you deploy the task sequence to collections that users can access?

  • WINPE / Task Sequence Wizard

    I am trying to figure out a way to preconfigure some of the task sequence wizard network settings.  I would like to be able to populate most of the network settings except the IP address and default gateway, along with the proxy server and proxy server
    exceptions.  I tried using netsh but the winhttp is not part of the winpe image.
    Any help would be great.
    Eric

    You have to do this with prestart function of the boot image and a script. Basically you have to do a script, here's a .vbs example:
    Dim oTSEnv
    Set oTSEnv = CreateObject("Microsoft.SMS.TSEnvironment")
    oTSEnv("OSDAdapter0SubnetMask") = "255.255.255.0"
    oTSEnv("OSDAdapter0Gateways") = "192.168.1.1"
    oTSEnv("OSDAdapter0DNSDomain") = "domain.com"
    oTSEnv("OSDAdapter0DNSServerList") = "192.168.1.100"
    Save that to a .vbs -file, name as you please.  Configure the boot image you're using to use the script as a source and for the command add: cscript yourscript.vbs
    I'm not 100% does the method work, but I would assume it will. Don't know though are the values updated to the GUI (the picture you posted), but you can check this with hitting F8 (assuming you have the cmd support enabled on your boot image) and entering
    ipconfig -all ...if the values show up there, they are setted and should work just like they are when typing them in the configuration window you posted.

  • What determines whether an application gets a green check or a yellow warning sign in the deployment summary screen when using an MDT/UDI task sequence?

    I am trying to get Office 2010 to install using a UDI task sequence, and it IS installing, but it has a yellow exclamation point next to it at the summary screen after the task sequence completes, as does another app I am trying to install.
    The apps that use an .MSI are fine, and get the green check, but the two apps that use .exe for their installers get the yellow warning sign.  I assume this has to do with exit codes or detection rules, but I am very new to SCCM (using 2012 and MDT
    2012 Update 1), so I need some help.
    Thank you! 
    EDIT: This probably has to do with the fact that SuccessOrFailureCode being blank.  I have been pouring over .vbs scripts and logs, but they all seem to indicate that my application installs just fine, with an exit code of 0. Where does this screen
    get the SuccessOrFailureCode?
    Like
    This
    Quote
    MultiQuote
    Edit

    I have some updated info on this problem.
    I am trying to install Symantec Endpoint Protection with a custom wrapped .EXE file, and I have created detection rules for the install.
    According to AppEnforce.log, SEP is installing and returning an Exit code of '1', and that is being handled with my custom return code handling, which I've defined as a 'success'.  However, the deployment summary is still showing a yellow exclamation point
    next to the SEP install, and the SuccessOrFailureCode is blank.
    Why isn't the SuccessOrFailureCode equal to '1'?  Where is the disconnect between the AppEnforce.log and the deployment summary.

Maybe you are looking for

  • Using AEBS with d-Link 655 (or "how do you set up a bridge?")

    Please help - I am at the end of my rope and am now treading into uncharted territory. Basically I want to see if I can have my MacBook working (wirelessly) through the AEBS wireless router, and our Windows PC working (wirelessly) through a d-Link DI

  • Trouble connecting iphone 5s to macbook pro via bluetooth

    My MBP (OS 10.10) and iPhone 5S (iOS 8.0.2) (both late 2013) do not connect via bluetooth.  I want to use Handoff and file transfer between them, which is why I am trying to connect them. Steps taken: 1) I pair the devices here: 2) My phone says that

  • Need to improve performance for bex queries

    Dear Experts, Here we have bex queries buit on BW infoset, further infoset is buit on 2 dsos and 4 infoobjects. we have built secondary indices to the two dso assuming will improve performance, but still query execution time is very long. Could you s

  • RETURN DELIVERY AND MD04

    Dears I created a return delivery from quality notification and material was taken from block stock(stock type is S) and delivery created but in MD04 it consume from stock for example i have a qty 100 pcs in unrestricted and i created a return delive

  • OA Extension for opportunity create page - Multi Entity Extension

    Hello, i'm trying to achieve a multi Entity Extension. We are storing additional attributes in a custom table for opportunities. i'm trying to extend the existing Opportunity Create Page to create an other record in custom table. Here is what i've do