WMS Tasks Sequence

Hi All,
Is there a way to sequence tasks that come up on the manifest picking screen in WMS? The sequence of tasks is not necessarily the same as the order of the order lines even though our picking rule groups by order.
Thanks.

Hi,
I hope to understand exactly what you want to do. If you need a long delay with your E series board check the following link
http://digital.ni.com/public.nsf/allkb/f66ccab02d3b901886256a03005ee14a
Let me know if it's ok.
Regards
Omar S. NI

Similar Messages

  • Creative Cloud: "Build" MSI Hangs During SCCM OSD Task Sequence Installation

    I wanted to share problem and solution I found when deploying Creative Cloud Packager-created packages/application using SCCM 2012 R2.  I encountered this problem packaging this as both a Package and as an Application in SCCM.
    When installing the software through SCCM Software Center onto a client, Software Center would close right as the installation of the "Build" folder MSI completed.  This is abnormal behavior.
    When installing the application as part of an OSD Task Sequence, the software would get installed (as shown by logs) but SCCM would hang forever at the "Installing Application" step.
    I tried all sorts of different settings in SCCM and with the MSIEXEC command line and eventually traced it to the Reboot Manager functionality in MSIEXEC that will close and attempt to restart processes using files that the installer needs. Reboot Manager clobbered part of SCCM and in the Task Sequence, the connection between SCCM and the installer was broken.
    The solution is to pass the property "MSIRESTARTMANAGERCONTROL=Disable" along the command line when calling MSIEXEC on the Build folder MSI file.  This setting disabled Restart Manager so it didn't mess up SCCM.  Once I did this, my Software Center installs and OSD Task Sequences ran as intended.
    For reference, I used the REBOOT=ReallySuppress property for reboots and let SCCM determine what to do with reboots based on the return code.  My testing was done with Windows 8.1 Enterprise x64.

    Like said, did you configure my proposal: "Configuration Manager client will force a mandatory device
    restart" ? After you've configured that, update your deployment type manually and remove the old revisions of the application and try running the TS again. I'm guessing you're a little bit too fast on your doings so the ConfigMgr doesn't play a long very
    nicely...
    The TS stops because of your Hard Reboot (exit code 1641), I've seen this before and I configured my application so that ConfigMgr client will force device restart and that fixed my problem. Although, also my application is the last one in the TS, but still,
    the TS continues after the reboot.
    Btw. have you tried changing your command line to:
    msiexec.exe /i cd-ord.msi TRANSFORMS=sv-se.mst MVLICENSE_KEY=xxxxxxxxxxxxxxxxx /L*V "%temp%\cdord.log" /qn
    /norestart

  • Task Sequence If Statement for chosen DomainOUs ?

    In my CustomSettings.ini I have five different "DomainOUs" lines which prompt whoever is running the Task Sequence to select an Org Unit while they're putting in the Computer Name.
    To keep things as simple as possible, I'd like a single Task Sequence that includes multiple "Install Application" packages which get installed based on which OU the machine is in. Can
    I use the "Options" tab of my various "Install Application" packages with
    an "If Statement" that applies it based on which "DomainOUs" was
    chosen earlier?
    I know I can make five separate Task Sequences for each OU and have the five different "Install Application" packages in them, but I'd like to avoid that as when I go to
    update a common app, I'd have to do that in all five Task Sequences as opposed to one.

    You can add an XML file with only the Language settings, that will bypass the language selection prompt.
    Bear in mind that when you create the answer file with Windows System Image Manager, you have to use the same architecture (64 or 32) as the target image.
    http://www.scconfigmgr.com/2014/01/30/create-an-answer-file-for-language-settings-during-osd-with-configmgr/
    Please take a moment to Vote as Helpful and/or Mark as Answer where applicable. Thanks.

  • Help with enabling TPM in Task Sequence for Dell Laptops

    Hi there,
    I would appreciate some advice on creating a task sequence for Win8.1 with TPM enabling for Dell laptops; I have BitLocker set up manually with a Group policy, but want to have TPM enabled in the task sequence. I have read older posts on sites such as windows
    noob, but can't see how to reference the CCTK and get TPM going for win8.1 in a SCCM2012 environment. 
    Obviously I haven't created this before so any help would be appreciated; I have noticed when I try to import my CCTK configurations into SCCM as it isn't a zip file I cannot do it.

    Luckily Dell wrote a whitepaper about that subject, see:
    http://en.community.dell.com/techcenter/extras/m/white_papers/20209083
    My Blog: http://www.petervanderwoude.nl/
    Follow me on twitter: pvanderwoude

  • Getting Access is Denied when Running Script in OSD Task Sequence

    I am attempting put in a script that will move the computer account to the proper OU in AD.  I have the script but when it launches inside of the TS I get "CScript Error: Loading script "C:\_SMSTaskSequence\WDPackage\Scripts\MoveOU.vbs" failed
    (Access is denied. )."
    I am using the Run Command Line, and using the "Run this step as the following account"  I have verified that the account has access to do what I need it to do in AD.  I have attached the logs as well.
    PackageID = 'WI10015A' InstallSoftware
    3/21/2012 8:46:53 AM 3316 (0x0CF4)
    BaseVar   = '', ContinueOnError='' InstallSoftware
    3/21/2012 8:46:53 AM 3316 (0x0CF4)
    SwdAction = '0001' InstallSoftware
    3/21/2012 8:46:53 AM 3316 (0x0CF4)
    Getting linked token InstallSoftware
    3/21/2012 8:46:53 AM 3316 (0x0CF4)
    failed to get the token information InstallSoftware
    3/21/2012 8:46:53 AM 3316 (0x0CF4)
    Get RunAs private desktop SMSTS-169042\SMSTSDesktop
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Run command line under a user account InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Found the location for the package _SMSTSWI10015A. The location is on \\<SCCMSERVERNAME>\SMSPKGF$\WI10015A\
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    nPos != CCM::Utility::String::npos, HRESULT=80004005 (e:\nts_sms_fre\sms\framework\tscore\resolvesource.cpp,253)
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Creating a connection to \\<SCCMSERVERNAME>\SMSPKGF$\WI10015A\ with default account
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Connection request for "\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A"
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    No credentials available for connecting to "\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A". See whether the share has already been connected.
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Connecting to "\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A"
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Successfully connected to "\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A"
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Resolved source to '\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A'
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Command line for extension .exe is "%1" %* InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Set command line: Run command line InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Working dir '\\<SCCMSERVERNAME>\SMSPKGF$\WI10015A'
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Executing command line: Run command line InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Create a process under given user token InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Process completed with exit code 1 InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Microsoft (R) Windows Script Host Version 5.8
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Copyright (C) Microsoft Corporation. All rights reserved.
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    CScript Error: Loading script "C:\_SMSTaskSequence\WDPackage\Scripts\MoveOU.vbs" failed (Access is denied. ).
    InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Command line returned 1 InstallSoftware
    3/21/2012 8:46:54 AM 3316 (0x0CF4)
    Entering ReleaseSource() for \\<SCCMSERVERNAME>\SMSPKGF$\WI10015A\
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    reference count 1 for the source \\<SCCMSERVERNAME>\SMSPKGF$\WI10015A\ before releasing
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Released the resolved source \\<SCCMSERVERNAME>\SMSPKGF$\WI10015A\
    InstallSoftware 3/21/2012 8:46:54 AM
    3316 (0x0CF4)
    Process completed with exit code 1 TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    Failed to run the action: Move Computer to Correct OU. 
    Incorrect function. (Error: 00000001; Source: Windows)
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    Sending status message . . . TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Send a task execution status message SMS_TSExecution_ActionFailError
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    MP server <SCCMSERVERNAME> and port 80. SSL=false. CRL=false.
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    Site code: WI1 TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Client machine name: 1J44KQ1 TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Client Identity: GUID:6ffb32d4-1184-4e40-a1c8-26272a707a72
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    Advertisement ID: WI12029D TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Package ID: WI1001E7 TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Sending StatusMessage TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    Formatted header: TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    <Msg SchemaVersion="1.1" ReplyCompression="zlib"><ID/><SourceID>ABB94CBE-33F4-4EB9-A151-34EE3474A0F9</SourceID><SourceHost/><TargetAddress>mp:[http]MP_StatusManager</TargetAddress><ReplyTo>direct:OSD</ReplyTo><Priority>3</Priority><Timeout>3600</Timeout><SentTime>2012-03-21T12:46:54Z</SentTime><Protocol>http</Protocol><Body
    Type="ByteRange" Offset="0" Length="4174"/><Hooks/><Payload Type="inline"/><TargetHost/><TargetEndpoint>StatusReceiver</TargetEndpoint><ReplyMode>Sync</ReplyMode><CorrelationID/></Msg>
    TSManager
    3/21/2012 8:46:54 AM 2520 (0x09D8)
    CLibSMSMessageWinHttpTransport::Send: URL: <SCCMSERVERNAME>:80  CCM_POST /ccm_system/request
    TSManager 3/21/2012 8:46:54 AM
    2520 (0x09D8)
    The request has succeeded. 200 OK TSManager
    3/21/2012 8:46:55 AM 2520 (0x09D8)
    Set a global environment variable _SMSTSLastActionRetCode=1
    TSManager 3/21/2012 8:46:55 AM
    2520 (0x09D8)
    Set a global environment variable _SMSTSLastActionSucceeded=false
    TSManager 3/21/2012 8:46:55 AM
    2520 (0x09D8)
    Clear local default environment TSManager
    3/21/2012 8:46:55 AM 2520 (0x09D8)
    Let the parent group (Testing) decides whether to continue execution
    TSManager 3/21/2012 8:46:55 AM
    2520 (0x09D8)
    The execution of the group (Testing) has failed and the execution has been aborted. An action failed.
    Operation aborted (Error: 80004004; Source: Windows)
    TSManager 3/21/2012 8:46:55 AM
    2520 (0x09D8)
    Failed to run the last action: Move Computer to Correct OU. Execution of task sequence failed.
    Incorrect function. (Error: 00000001; Source: Windows)
    TSManager 3/21/2012 8:46:55 AM
    2520 (0x09D8)
    Any suggestions would be greatly appreciated!
    "You can't fix stupid!"

    I'm having the exact same issue.  I'm using AutoIT for my script to move the computer account.  I've tried using ADO, LDAP, and LDAP/ADSystemInfo object.  They all fail with access denied.  In fact the ADO version of my script fails just
    trying to create the "ADODB.Connection" object which I know for a fact doesn't require elevation or administrator access.  However, all three versions of the script work correctly when run manually outside the TS.  They also work correctly on XP
    machines during OSD.  Only when deploying a Win7 machine do they fail during the TS.  I've tried adding the runas user to the local administrators group beforehand but no dice.  Did you have to restart the computer after doing the net localgroup
    change?  There has to be some other security config in Win7 that is set somewhere doing this.  I just can't figure out what.  I've even started looking at DCOM/COM permissions to see if something isn't right there.
    I don't see why but maybe the script needs to be run locally?  Any other ideas?

  • Open task sequence log with cmtrace on error

    Hi,
    Is there a way to make an SCCM 2012 R2 task sequence automatically open the smsts.log (with  cmtrace) when an error occurs?
    J.
    Jan Hoedt

    I would agree with Torstren. The difficult piece would be determining where the smsts.log is, based on where its at in the task sequence. Once you have that it wouldn't be too difficult to place those steps in the
    Gather Logs and StateStore on Failure group. The catch will be, even if CMTrace is open, the machine will still reboot after 15 minutes unless the cmd prompt is also open.

  • SCCM 2012 SP1 MDT task sequence fails on reboot does not retain ip

    we are having a sccm 2012 sp1 server that used for installation of win 8.1 Enterprise , the task sequence works perfectly fine but when we  run the same task on HP Elite 8300 system having Intel 82579LM Adapter from Windows XP , after the reboot the
    task fails as no ip address is assigned the NIC , We did download the WInPE Adapter drivers from HP site and injecting to the x86 Boot Image (6.2.9200) however the task still fails ,
    Our environment uses all static ip address , the same task as mentioned earlier has worked fine with Different brands of HP elite 8200/8100 , infact the elite 8200 also uses the same NIC card
    Find below the smsts.log file
    Main error in the log file is
    No physical network adapters found    OSDNetSettings    2/12/2014 1:02:38 AM    2064 (0x0810)
    Found network adapter "Intel(R) 82579LM Gigabit Network Connection" with IP Address 169.254.181.151.    TSMBootstrap    2/12/2014 1:05:41 PM    1984 (0x07C0)
    Xtract from LOG
    SMSTSRebootDelay=60    Reboot    2/12/2014 1:01:56 AM    3496 (0x0DA8)
    SMSTSRebootMessage=A new Microsoft Windows operating system is being installed. The computer must restart to continue.    Reboot    2/12/2014 1:01:56 AM    3496 (0x0DA8)
    SMSTSRebootRequested=WinPE    Reboot    2/12/2014 1:01:56 AM    3496 (0x0DA8)
    Process completed with exit code 0    TSManager    2/12/2014 1:01:56 AM    1876 (0x0754)
    !--------------------------------------------------------------------------------------------!    TSManager    2/12/2014 1:01:56 AM    1876 (0x0754)
    Successfully completed the action (Restart to Windows PE) with the exit win32 code 0    TSManager    2/12/2014 1:01:56 AM    1876 (0x0754)
    Set authenticator in transport    TSManager    2/12/2014 1:01:56 AM    1876 (0x0754)
    Set a global environment variable _SMSTSLastActionRetCode=0    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Set a global environment variable _SMSTSLastActionSucceeded=true    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Clear local default environment    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Updated security on object E:\_SMSTaskSequence.    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Set a global environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Set a global environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Save the current environment block    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Executing command line: "bcdedit.exe"    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    CreateProcess failed. Code(0x80070002)    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Command line execution failed (80070002)    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    Staging boot image UNB0003A    TSManager    2/12/2014 1:01:57 AM    1876 (0x0754)
    ResolveSource flags: 0x00000000    TSManager    2/12/2014 1:01:59 AM    1876 (0x0754)
    SMSTSPersistContent: . The content for package UNB0003A will be persisted    TSManager    2/12/2014 1:01:59 AM    1876 (0x0754)
    Set authenticator in transport    TSManager    2/12/2014 1:01:59 AM    1876 (0x0754)
    WinHttp credentials set    TSManager    2/12/2014 1:01:59 AM    1876 (0x0754)
    List of files to be downloaded    TSManager    2/12/2014 1:01:59 AM    1876 (0x0754)
    Downloaded file from http://unb-ho-sccmdb.exch1.mas.unb.com:80/SMS_DP_SMSPKG$/UNB0003A/sccm?/WinPE.UNB0003A.wim to E:\_SMSTaskSequence\Packages\UNB0003A\WinPE.UNB0003A.wim     TSManager    2/12/2014 1:02:22 AM    1876
    (0x0754)
    VerifyContentHash: Hash algorithm is 32780    TSManager    2/12/2014 1:02:22 AM    1876 (0x0754)
    Found boot image E:\_SMSTaskSequence\Packages\UNB0003A\WinPE.UNB0003A.wim    TSManager    2/12/2014 1:02:25 AM    1876 (0x0754)
    Copying boot image locally...    TSManager    2/12/2014 1:02:25 AM    1876 (0x0754)
    Failed to find ADK installation root registry key    TSManager    2/12/2014 1:02:32 AM    1876 (0x0754)
    Opening image file E:\_SMSTaskSequence\WinPE\sources\boot.wim    TSManager    2/12/2014 1:02:32 AM    1876 (0x0754)
    Applying image 1 to volume E:\_SMSTaskSequence\WinPE    TSManager    2/12/2014 1:02:32 AM    1876 (0x0754)
    Closing image file E:\_SMSTaskSequence\WinPE\sources\boot.wim    TSManager    2/12/2014 1:02:35 AM    1876 (0x0754)
    Capturing WinPE bootstrap settings    TSManager    2/12/2014 1:02:35 AM    1876 (0x0754)
    Environment scope successfully created: Global\{E7E5BB69-6198-4555-B5CA-6C46A2B5EB78}    TSManager    2/12/2014 1:02:35 AM    1876 (0x0754)
    Executing command line: "osdnetsettings.exe" capture adapters:true scope:Global\{E7E5BB69-6198-4555-B5CA-6C46A2B5EB78}    TSManager    2/12/2014 1:02:35 AM    1876 (0x0754)
    ==============================[ OSDNetSettings.exe ]===========================    OSDNetSettings    2/12/2014 1:02:36 AM    2064 (0x0810)
    Command line: "osdnetsettings.exe" capture adapters:true scope:Global\{E7E5BB69-6198-4555-B5CA-6C46A2B5EB78}    OSDNetSettings    2/12/2014 1:02:36 AM    2064 (0x0810)
    No adapters found with non-empty DNSDomainSuffixSearchOrder    OSDNetSettings    2/12/2014 1:02:36 AM    2064 (0x0810)
    Adapter "ROOT\SYMC_TEEFER2MP\0000" not found    OSDNetSettings    2/12/2014 1:02:38 AM    2064 (0x0810)
    No physical network adapters found    OSDNetSettings    2/12/2014 1:02:38 AM    2064 (0x0810)
    OSDNetSettings finished: 0x00000000    OSDNetSettings    2/12/2014 1:02:38 AM    2064 (0x0810)
    Process completed with exit code 0    TSManager    2/12/2014 1:02:38 AM    1876 (0x0754)
    Installing boot image to hard drive    TSManager    2/12/2014 1:02:38 AM    1876 (0x0754)
    Backing up existing boot system before trying to set up new boot system    TSManager    2/12/2014 1:02:38 AM    1876 (0x0754)
    BootLoader::backup: C:\, E:\_SMSTaskSequence\backup    TSManager    2/12/2014 1:02:39 AM    1876 (0x0754)
    BootLoader::restore: E:\_SMSTaskSequence\WinPE, C:\    TSManager    2/12/2014 1:02:43 AM    1876 (0x0754)
    Saving bcd store to E:\_SMSTaskSequence\WinPE\boot\BCD    TSManager    2/12/2014 1:02:43 AM    1876 (0x0754)
    Executing command line: "E:\_SMSTaskSequence\WinPE\SMS\bin\i386\bootsect.exe" /NT60 SYS /MBR    TSManager    2/12/2014 1:02:45 AM    1876 (0x0754)
    Process completed with exit code 0    TSManager    2/12/2014 1:02:46 AM    1876 (0x0754)
    Updated security on object E:\_SMSTaskSequence.    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a global environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a global environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Save the current environment block    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Updated security on object C:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca.    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Updated security on object D:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca.    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Updated security on object E:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca.    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Updated security on object E:\_SMSTaskSequence.    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a global environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSNextInstructionPointer=59    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a global environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Set a TS execution environment variable _SMSTSInstructionStackString=0 41 57    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Save the current environment block    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    Expand a string: %_SMSTSMDataPath%\Logs    TSManager    2/12/2014 1:02:47 AM    1876 (0x0754)
    <![LOG[LOGGING: Finalize process ID set to 780]LOG]!><time="01:04:01.537+480" date="02-12-2014" component="TSBootShell" context="" type="1" thread="784" file="tslogging.cpp:1495">  
          1/1/1601 12:00:00 AM    1995266923 (0x76ED5B6B)
    ==============================[ TSBootShell.exe ]==============================    TSBootShell    2/12/2014 1:04:01 AM    784 (0x0310)
    Succeeded loading resource DLL 'X:\sms\bin\i386\1033\TSRES.DLL'    TSBootShell    2/12/2014 1:04:01 AM    784 (0x0310)
    Debug shell is enabled    TSBootShell    2/12/2014 1:04:01 AM    784 (0x0310)
    Waiting for PNP initialization...    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    RAM Disk Boot Path: MULTI(0)DISK(0)RDISK(0)PARTITION(3)\_SMSTASKSEQUENCE\WINPE\SOURCES\BOOT.WIM    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    WinPE boot path: E:\_SMSTASKSEQUENCE\WINPE\SOURCES\BOOT.WIM    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    Booted from fixed disk    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    Found config path E:\_SMSTaskSequence    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    hMap != 0, HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentscope.cpp,515)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    m_pGlobalScope->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,337)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    this->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,549)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    hMap != 0, HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentscope.cpp,515)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    m_pGlobalScope->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,337)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    this->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,549)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    hMap != 0, HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentscope.cpp,515)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    m_pGlobalScope->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,337)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,430)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    Can not find DeploymentType in file TsmBootstrap.ini or the file doesn't exist. This is not running on Windows To Go.    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    hMap != 0, HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentscope.cpp,515)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    m_pGlobalScope->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,337)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,430)    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    Restoring boot system from E:\_SMSTaskSequence\backup    TSBootShell    2/12/2014 1:04:01 AM    796 (0x031C)
    Successfully loaded the BCD boot system    TSBootShell    2/12/2014 1:04:05 AM    796 (0x031C)
    Successfully loaded an exported NTLDR boot system    TSBootShell    2/12/2014 1:04:05 AM    796 (0x031C)
    BootLoader::restore: E:\_SMSTaskSequence\backup, C:\    TSBootShell    2/12/2014 1:04:05 AM    796 (0x031C)
    Successfully merged logs from cache.    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    hMap != 0, HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentscope.cpp,515)    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    m_pGlobalScope->open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,337)    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    open(), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\tscore\environmentlib.cpp,430)    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Loading bootstrap settings from E:\_SMSTaskSequence\WinPE    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Loading saved WinPE settings    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Creating key 'Software\Microsoft\SMS\47006C006F00620061006C005C007B00450037004500350042004200360039002D0036003100390038002D0034003500350035002D0042003500430041002D003600430034003600410032004200350045004200370038007D00'    TSBootShell  
     2/12/2014 1:04:06 AM    796 (0x031C)
    Environment scope successfully created: Global\{E7E5BB69-6198-4555-B5CA-6C46A2B5EB78}    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Configuring WinPE bootstrap settings    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Creating WinPE answer file    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Setting hive location to "X:\windows\system32"    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Getting namespace "Microsoft-Windows-Setup" for architecture "x86"    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Configuring global network settings    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Join type:     TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    DNS domain: exch1.mas.unb.com    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    DNS domain search order:     TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    IP filter sec enabled: false    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    No adapters found in environment.  Performing global configuration only.    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Writing configuration information to E:\_SMSTaskSequence\WinPE\WinPeUnattend.xml    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Successfully saved configuration information to E:\_SMSTaskSequence\WinPE\WinPeUnattend.xml    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    Executing command line: wpeinit.exe -winpe    TSBootShell    2/12/2014 1:04:06 AM    796 (0x031C)
    The command completed successfully.    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    Starting DNS client service.    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    Finalizing network settings    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    No adapters found in environment.  Performing global finalization only.    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    Finalizing global network settings    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    DNS domain: exch1.mas.unb.com    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    DNS domain search order:     TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    DNS for WINS enabled: false    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    LMHosts file enabled: true    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    Host lookup file:     TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    WINS scope ID:     TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    Executing command line: X:\sms\bin\i386\TsmBootstrap.exe /env:WinPE /configpath:E:\_SMSTaskSequence    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    The command completed successfully.    TSBootShell    2/12/2014 1:05:40 AM    796 (0x031C)
    ==============================[ TSMBootStrap.exe ]==============================    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Command line: X:\sms\bin\i386\TsmBootstrap.exe /env:WinPE /configpath:E:\_SMSTaskSequence    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Succeeded loading resource DLL 'X:\sms\bin\i386\1033\TSRES.DLL'    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Succeeded loading resource DLL 'X:\sms\bin\i386\TSRESNLC.DLL'    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Adding SMS bin folder "X:\sms\bin\i386" to the system environment PATH    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Failed to open PXE registry key. Not a PXE boot.    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Resuming Task Sequence in WinPE    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Creating key 'Software\Microsoft\SMS\47006C006F00620061006C005C007B00350031004100300031003600420036002D0046003000440045002D0034003700350032002D0042003900370043002D003500340045003600460033003800360041003900310032007D00'    TSMBootstrap  
     2/12/2014 1:05:40 AM    1984 (0x07C0)
    Environment scope successfully created: Global\{51A016B6-F0DE-4752-B97C-54E6F386A912}    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Creating key 'Software\Microsoft\SMS\47006C006F00620061006C005C007B00420041003300410033003900300030002D0043004100360044002D0034006100630031002D0038004300320038002D003500300037003300410046004300320032004200300033007D00'    TSMBootstrap  
     2/12/2014 1:05:40 AM    1984 (0x07C0)
    Environment scope successfully created: Global\{BA3A3900-CA6D-4ac1-8C28-5073AFC22B03}    TSMBootstrap    2/12/2014 1:05:40 AM    1984 (0x07C0)
    Loading the Task Sequencing Environment from "E:\_SMSTaskSequence\TSEnv.dat".    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Updating the local data path in the Task Sequencing Environment.    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Setting LogMaxSize to 1000000    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Setting LogMaxHistory to 1    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Setting LogLevel to 0    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Setting LogEnabled to 1    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Setting LogDebug to 1    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Command line for extension .exe is "%1" %*    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Set command line: "X:\sms\bin\i386\TsProgressUI.exe" /Register:WinPE    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    Executing command line: "X:\sms\bin\i386\TsProgressUI.exe" /Register:WinPE    TSMBootstrap    2/12/2014 1:05:41 AM    1984 (0x07C0)
    ==========[ TsProgressUI started in process 2004 ]==========    TsProgressUI    2/12/2014 1:05:41 AM    2008 (0x07D8)
    Command line: "X:\sms\bin\i386\TsProgressUI.exe" /Register:W
    In dire need of help,
    I have already gone through the below articles on the NET
    http://social.technet.microsoft.com/Forums/systemcenter/en-US/0fe5cded-51cf-487a-97e3-837fb3426a3e/install-software-updates-in-osd-reboots-leaves-clients-in-provisioning-mode?forum=configmgrosd
    http://social.technet.microsoft.com/Forums/systemcenter/en-US/c590e486-d3ca-423f-8953-e596160f3567/updates-hang-during-osd-kb2509007-not-working-for-me?forum=configmgrosd
    Awating response,
    Hasan Reza

    Well Finally I sorted my issue ,
    Just want to share the solution, may be it would be helpful to some one else and save some times
    The problem was that the Xp images has lot of hidden NIC installed , this would not allow the system to work with the correct NIC card and Ip address (System -> View Hidden Devices) , what I did 2 things
    1) Copied the OSD Script folder from the SCCM Server to the Client pc and ran that ztigather.wsf and captured the output , it was evident that it showed capturing multiple adapters , (There are some blogs that pointed out that OSD can capture only one nic
    due to the only one Adapter0 section being defined in the ZTIgather.xml file,)
    2) I open the registry at the xp pc navigated to HKLM-> System ->Current Control Set-> Services-> TCPIP -> Parameters-> Interfaces ->
    Expect for the NIC card that had the Ip address assigned I deleted all other nic card's guid,
    As then post running deleting the old scanstate (USMTUTIL /rd c:\statestore) , reran the task and VOILA..
    All worked fine , below are the two post I followed , though notvery relevant but they were helpful and help me reached the conclusion.
    Thanks,
    Hasan Reza.
    http://systemscenter.ru/mdt2012.en/ztigatherwsf.htm
    http://social.technet.microsoft.com/Forums/windowsserver/en-US/8acb7cd1-7028-4ffe-86c9-eb43041cf8b3/how-do-i-get-rid-of-second-169254xx-ipv4-address-on-windows-server-2008-sp2-x86?forum=winservergen

  • Powershell Syntax working when run in cmd, but when run through SCCM2007 Task Sequence it claims the syntax is incorrect?

    The code below is a simple powershell statement which enables me to change the execution policy so that I can run powershell scripts. When I run this in a normal windows enviroment the statement will work fine, not giving me an issue whatsoever. However,
    whenever it runs in the task sequence the TS fails. I am running this via the command line option in the task sequence, each time running this step as 3 different types of administrators.
    powershell.exe -noninteractive Set-ExecutionPolicy -ExecutionPolicy unrestricted
    Checking the log file it states this:
    Set-ExecutionPolicy : The term 'Set-ExecutionPolicy' is not recognized as the InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    name of a cmdlet, function, script file, or operable program. Check the InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    spelling of the name, or if a path was included, verify that the path is InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    correct and try again. InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    At line:1 char:1 InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    + Set-ExecutionPolicy -ExecutionPolicy unrestricted InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    + ~~~~~~~~~~~~~~~~~~~ InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    + CategoryInfo : ObjectNotFound: (Set-ExecutionPolicy:String) [], InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    CommandNotFoundException InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    + FullyQualifiedErrorId : CommandNotFoundException InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    InstallSoftware 13/10/2014 17:28:09 3768 (0x0EB8)
    Failed to run the action: Script Exception.
    Incorrect function. (Error: 00000001; Source: Windows) TSManager 13/10/2014 17:28:09 2716 (0x0A9C)
    I am new to both SCCM and Powershell, but from my point of view, this should work, considering that the syntax is not actually incorrect? Please could anyone with any idea drop some hints and tips on how to
    stop this issue.

    I'm not using 3 admin accounts at once if that's how it sounded. I have tried 3 different Admin accounts because I felt that perhaps the difference in permissions may have made a difference in whether I was able to run the syntax and scripts. So I tried
    using my own personal administrator account, the SCCMNA account, and the local admin account, which I read worked.
    At this point in the task sequence I have:
    - Installed the OS
    - Connected to the domain
    - Installed Applications such as; Flash, Shockware, Reader etc.
    Once it has installed the last application within a folder called "Helper Apps" (Which contains various Java and Adobe apps which install fine) it will then run a "Use Toolkit Package" using the MDT toolkit, once this stage is complete
    it then progresses to the Script Exception section of the TS.
    powershell.exe -noninteractive Set-ExecutionPolicy -ExecutionPolicy unrestricted
    I obviously need this to work otherwise I am not allowed to run the script, but because this syntax is "incorrect" it stops the task sequence.
    I hope this information might shed some more light on the situation.

  • Error 16389 running a Task Sequence to install software

    We've run into multiple WinXPProSP3 computers generating error code 16389 when trying to run a TS.  After searching on Google, we found this, 
    http://blogs.technet.com/b/smsandmom/archive/2007/10/29/sccm-2007-task-sequence-fails-drive-letter-not-displayed.aspx
    , which led to another article to modify a RegKey,  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318} , to add a key of UpperFilters, with a value of PartMgr.  The key WAS missing on the machines with
    the error, and, adding that key and value DOES fix the problem.  This key and value seem to be default for the OS.
    However, searching Google for that RegKey has a LOT of suggestions to delete that key and value, due to issues with USB Thumbdrives and iPods not being seen when plugged in--so, it seems that there may be a conflict.
    Does anyone know of a fix for Error 16389 without having to add that key, if it's going to cause other problems?
    Thanks.

    Hi,
    Will you please past the detailed errors in the smsts.log?
    From your description your are using TS to install software right?
    If so you should first make sure this software package meats the following requirement when it was deployed through TS:
    this program can be installed under local system account.
    this program can be installed without any user interaction (such as: press next button).
    this program will not force computer reboot, it allows sccm ts to manage the reboot.
    If your OSD TS return 16389 exit code, you can try to change the volume license keys. Because once i have seem this error and it was solved by changing the volume license key.
    Hope this will help.
    Thanks

  • SCCM's OSD (not MDT): Task sequence can be tweaked into imaging Windows+VHD Native Boot, but can it go all the way and deploy?

    Hello All,
    What I am trying to do is use SCCM's own OSD Task Sequence / Windows PE to deploy an operating system that boots using VHD Native Boot. (C:\ = VHD File  with Windows, D:\ Data drive with BCDBoot).
    MDT 2013 Can do it I've been told, but I am putting off MDT until Windows 10 if I can get away with it.
    TechNet VHD Native Boot on Windows 8.1:
    http://technet.microsoft.com/en-us/library/hh825689.aspx
    http://technet.microsoft.com/en-us/library/hh825691.aspx
    The good news is it is working up to the "Apply Operating System" phase, but that apply operating system phase is reported as an error even though it completes successfully. It can't clean up the SMSTS folder it's looking for on the C:\ because
    it's been moved over to the D:\ by a diskpart script. We are left with the deployment working but requiring IT staff to deal with the OOBE Personalization wizard and adding each PC to the domain manually. From that point on the SCCM client can do the rest,
    which works for US before we upgrade to Windows 10 with utilizing MDT.
    I am not talking about deploying an OS to a VHD file and putting that file on a network share i.e.
    http://blogs.technet.com/b/configurationmgr/archive/2013/10/31/new-in-system-center-2012-r2-configuration-manager-deploying-an-operating-system-to-a-virtual-hard-drive-vhd.aspx
    I reported getting the diskpart script working first here:
    https://social.technet.microsoft.com/Forums/en-US/ff124f09-1d2e-4fc4-a5b6-63b683f3d208/native-vhd-boot-deployments-from-sccm-2012-r2?forum=configmanagerosd
    Here it is:
    rem work around any USB disk left in or any CDROM detected by PE as drive D
    select volume D
    assign letter=F noerr
    rem select the formatted volume and reassign it's drive letter
    select volume C
    assign letter=D
    rem create and setup VHD file
    create vdisk file=D:\DEV_WIN81.VHD maximum=250000 type=expandable
    select vdisk file=D:\DEV_WIN81.VHD
    attach vdisk
    create partition primary
    active
    format FS=NTFS quick label="Developer Win81 VHD"
    assign letter=C
    rescan
    exit
    (type=fixed is better for performance - we'll surely activate when we have dual boot 8.1 / Windows 10 later for the Win10 VHD's)
    The Task Sequence looks like this:
    I'd like to add a few more steps after apply operating system if I can, but I have to resolve this error with "Apply Operating system before I can go further."
    Question:
    Can an OSD guru tell me if there are any Task Sequence Variables we could throw at this to make the Apply Operating System sequence complete without error so we can do all SCCM OSD Deployment steps?
    If we can, then someone (not me) gets to add a new TechNet blog post about this being possible. It's my understanding presently that only MDT can support deploying WIM files into VHDs on Workstations, that boot them.
    The install image was created using dism to convert a VHD from a Hyper-V host into a wim. I know I'm meant to use SCCM to capture it, but I don't think that's causing this problem because when we are deploying from that image to a HDD without VHD we don't
    get any issues.
    I'm only allowed enough characters to paste the tail end of the apply operating system phase only:
    <![LOG[Execution engine result code: Success (0)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:929">
    <![LOG[Cleaning Up.]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:675">
    <![LOG[Removing Authenticator]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:686">
    <![LOG[shKey.DeleteValue( c_szRegValue_SecurityToken ), HRESULT=80070002 (e:\nts_sccm_release\sms\framework\ccmutillib\ccmutillib.cpp,1660)]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmutillib.cpp:1660">
    <![LOG[Cleaning up task sequence folder]LOG]!><time="18:29:37.691-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2329">
    <![LOG[Unable to delete file C:\_SMSTaskSequence\TSEnv.dat (0x80070005). Continuing.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="ccmfile.cpp:1056">
    <![LOG[hr, HRESULT=80070091 (e:\nts_sccm_release\sms\framework\core\ccmcore\ccmfile.cpp,1218)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="ccmfile.cpp:1218">
    <![LOG[Failed to delete directory 'C:\_SMSTaskSequence']LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="ccmfile.cpp:1218">
    <![LOG[(dwRet = ::SetNamedSecurityInfoW ((WCHAR*) pszObjectName, objectType, OWNER_SECURITY_INFORMATION, pOwnerSID, NULL, NULL, NULL)) == ERROR_SUCCESS, HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6675)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6675">
    <![LOG[SetNamedSecurityInfo() failed.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6675">
    <![LOG[SetObjectOwner() failed. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6687">
    <![LOG[SetObjectOwner (szFName, SE_FILE_OBJECT, c_szAdministrators), HRESULT=80070005 (e:\qfe\nts\sms\framework\tscore\utils.cpp,6772)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:6772">
    <![LOG[RemoveFile() failed for C:\_SMSTaskSequence\TSEnv.dat. 0x80070005.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="3" thread="960" file="utils.cpp:6816">
    <![LOG[RemoveDirectoryW failed (0x80070091) for C:\_SMSTaskSequence]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:6900">
    <![LOG[Deleting volume ID file C:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
    <![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
    <![LOG[Deleting volume ID file D:\_SMSTSVolumeID.7159644d-f741-45d5-ab29-0ad8aa4771ca ...]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="resolvesource.cpp:506">
    <![LOG[DeleteFileW(sVolumeIDFile.c_str()), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\resolvesource.cpp,508)]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="resolvesource.cpp:508">
    <![LOG[Successfully unregistered Task Sequencing Environment COM Interface.]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="environmentlib.cpp:910">
    <![LOG[Command line for extension .exe is "%1" %*]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:228">
    <![LOG[Set command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="commandline.cpp:731">
    <![LOG[Executing command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.738-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:827">
    <![LOG[==========[ TsProgressUI started in process 8012 ]==========]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:330">
    <![LOG[Command line: "X:\sms\bin\x64\TsProgressUI.exe" /Unregister]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="0" thread="8040" file="winmain.cpp:332">
    <![LOG[Unregistering COM classes]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:204">
    <![LOG[Unregistering class objects]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:495">
    <![LOG[Shutdown complete.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TsProgressUI" context="" type="1" thread="8040" file="winmain.cpp:512">
    <![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="commandline.cpp:1123">
    <![LOG[Successfully unregistered TS Progress UI.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:2903">
    <![LOG[Sending success status message]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:784">
    <![LOG[MP server http://OUR-SCCM.ourcompany.com. Ports 80,443. CRL=false.]LOG]!><time="18:29:37.754-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5881">
    <![LOG[Setting authenticator]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="utils.cpp:5903">
    <![LOG[Set authenticator in transport]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:7734">
    <![LOG[Sending StatusMessage]LOG]!><time="18:29:37.785-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:4023">
    <![LOG[Setting message signatures.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1295">
    <![LOG[Setting the authenticator.]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:1325">
    <![LOG[CLibSMSMessageWinHttpTransport::Send: URL: OUR-SCCM.ourcompany.com:80 CCM_POST /ccm_system/request]LOG]!><time="18:29:37.801-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="libsmsmessaging.cpp:8604">
    <![LOG[Request was successful.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="libsmsmessaging.cpp:8939">
    <![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="0" thread="960" file="utils.cpp:811">
    <![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:811">
    <![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="2" thread="960" file="utils.cpp:842">
    <![LOG[End program: ]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tsmanager.cpp:805">
    <![LOG[Finalize logging request ignored from process 856]LOG]!><time="18:29:37.832-420" date="12-26-2014" component="TSManager" context="" type="1" thread="960" file="tslogging.cpp:1737">
    <![LOG[Process completed with exit code 0]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="commandline.cpp:1123">
    <![LOG[Task Sequence Manager returned code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmediawizardcontrol.cpp:2180">
    <![LOG[Exiting with return code 0x00000000]LOG]!><time="18:29:37.863-420" date="12-26-2014" component="TSPxe" context="" type="1" thread="592" file="tsmbootstrap.cpp:1238">
    <![LOG[Execution complete.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:693">
    <![LOG[hMap != 0, HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentscope.cpp,493)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentscope.cpp:493">
    <![LOG[m_pGlobalScope->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,335)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:335">
    <![LOG[this->open(), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\environmentlib.cpp,553)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="environmentlib.cpp:553">
    <![LOG[::RegQueryValueExW(hSubKey, szReg, NULL, NULL, NULL, &dwSize), HRESULT=80070002 (e:\qfe\nts\sms\framework\tscore\utils.cpp,811)]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="utils.cpp:811">
    <![LOG[RegQueryValueExW is unsuccessful for Software\Microsoft\SMS\Task Sequence, SMSTSEndProgram]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:811">
    <![LOG[GetTsRegValue() is unsuccessful. 0x80070002.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="2" thread="760" file="utils.cpp:842">
    <![LOG[End program: ]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="bootshell.cpp:725">
    <![LOG[Finalizing logging from process 752]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1741">
    <![LOG[Finalizing logs to root of first available drive]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1583">
    <![LOG[Successfully finalized logs to D:\SMSTSLog]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="1" thread="760" file="tslogging.cpp:1640">
    <![LOG[Cleaning up task sequencing logging configuration.]LOG]!><time="18:29:37.879-420" date="12-26-2014" component="TSBootShell" context="" type="0" thread="760" file="tslogging.cpp:584">
    MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast.

    I have already set it to FALSE. The solution to this will be some different OSD Task Sequence variables or a statement that it can't be made to work.
    I believe that setting defines what volume will be the BOOT / OS Drive Letter. Some people were getting D:\WINDOWS as their boot volume drive letter. Setting to true means whatever was the System Drive letter (usually C) in the image will remain as such
    after it was was applied, setting it to false will make the system have the same drive letter arrangement as what Windows PE detects. In my case I set it to false so that no matter what the new VHD file setup as drive C will be the system drive. I'll set it
    to true on the next deployment but I expect there to be no difference, because in both PE and the WIM the installation volume is the C:.
    We are talking about the DRIVE LETTERS Windows PE SCCM OSD is using for it's temporary files - and how we can manipulate these locations using OSD Task Sequence Variables, so the Apply OS doesn't try and clean up files that are not there
    - and fail with an error if you have added a VHD Native Boot volume.
    This OSDPreserveDriveLetter setting isn't having any effect on the problem here.
    I believe that Format step is setting some task variables used by the OSD Deployment process - telling it where to store it's temporary files. However between the Format Disks and Apply operating system steps the OSD Task Sequence isn't picking up on the
    fact what was the C:\ after Format HDD step is now the D:\ .
    A developer who has an understanding of how the OSD boot process executes in order would be able to see what's going on here.
    MCSE,MCNE,SCO,Sair Linux/GNU, Open source-enthusiast.

  • Driver Utility Task Sequence Process/Examines all the driver Packages in the T/s, Although it actually should install only 2-3 Drivers for a particular Computer Model

    Hi,
    Although the Driver Utility Task Sequence is working fine as expected, i have noticed that after initiating the Driver Utility from from the Software Center it takes quite a long time to start the installation of the drivers and few Apps which are in chain
    I have pasted the log from a Computer which shows that it checks/Processes all the packages which are in the T/s and that is where it spends the time, although for this model it has to install just 3-4 drivers
    Can we do something about this, to make the installation process just checks/Examines the drivers which are associated under its Specific Model Tree and saves time.  ( Fyi there are around 14 Different Models of Laptops/Desktops which are separated
    by folder and a WQL Query to identify the Model.
    could not paste the log file as its too long
    Thank you,
    Tanoj
    OSLM ENGINEER - SCCM 2007 & 2012

    Is there a specific need that you need to update the already installed drivers or is this just something that someone
    has always done and it will always be done? Give it a thought for a moment.
    We dont upgrade the already installed Drivers, its just installed when a machine is newly imaged / reimaged 
    so whenever a new image is being engineered, simultaneously we create a new T/s with updated drivers and that goes to production along with the new image release
    Thank you all for your replies, looks like the only option at this point is to workaround with splitting the T/s
    Regards
    Tanoj
    OSLM ENGINEER - SCCM 2007 & 2012

  • Failed to run task sequence - 80004005. DNS working though.

    I seem to be getting a fairly common generic error but with possibly with a slight difference then some of the other problems/answers I have seen.  Generally it looks like this is a DNS issue but I am not sure in my case.
    Let me 1<sup>st</sup> describe my infrastructure and what I am trying to accomplish.  System Center 2012 R2, trying to deploy server 2012.  We use PKI on the main MPs/DPs.  I have another DP that I will use for OSD content that
    won’t use PKI.  I am 1<sup>st</sup> attempting to use boot media, vs PXE, to image a computer.  I have distributed the content to the DP, created a boot media USB and everything looks good there as far as I can tell.  My boot media
    selects the PKI MP and we have created the client cert and I direct it to the non-http DP.  The process seems to accept the certificate and the boot media creation completes.  Next boot off the media on the computer and drop into Windows PE where
    I can manually enter the IP information.  When I click next the process fails.
    Error:
    Failed to Run Task Sequence
    An error occurred while retrieving policy for this computer (0x80004005).
    So starting some of the troubleshooting I F8.
    -Can I ping the SCCM site servers?  Yes, I can ping, both short and FQDN, the primary, MP, DP.
    Looking at the SMSTSLog I see the following lines/errors.
    1)Failed to open PXE registry key.  Not a PXE boot.
    2)Failed to find the source drive where WinPE was booted from
    But then the next line is:  Executing from Media WinPE
    These 2 are at the top of the log and the process seems to continue on with the IP and variable information.  These are the lines of information later in the log with the error(s):
    -CLibSMSMessageWinHTTPTransport::Send:URL: (my MP)
    -In SSL, but with no client cert
    -Error.  Received 0x80072ee7 from WinHttpSendRequest.
    -Hr,HRESULT=80072ee7
    -sending with winhttp failed, 80072ee7
    -m_pHttp Transport -> (etc….)
    -MPKeyInformation.RequestMPKeyInformationForMedia
    -Failed to get information of MP: https//(my MP)
    So I am wondering where I start.  I don’t see that unknown host line that seems to indicate that it is a DNS issue.  I see some stuff about the in SSL but with no cert.  Does this mean that the cert we had to create isn’t working correctly? 
    We pretty much followed
    http://www.jamesbannanit.com/2012/05/how-to-build-and-capture-in-configuration-manager-2012-using-https/
    I have also looked through this
    http://blogs.technet.com/b/configurationmgr/archive/2009/07/27/a-step-by-step-for-using-osd-through-system-center-configuration-manager-2007.aspx
    And I have pretty much everything done there except a network access account.  Looking at my settings I am set to, “Use the computer account of the Configuration Manager client”  However, my computer I am trying to image is a “WORKGROUP” and not
    joining the domain.  But.. am I really getting that far in the process?  Would I be failing to get policy because of this or does this just come into play when I try to get the OS from the DP?

    Have you seen this thread?
    http://social.technet.microsoft.com/Forums/systemcenter/en-US/528c2b54-55ef-4926-bebb-f73ca18a059b/trouble-deploying-windows-7-using-osd-using-pxe-in-sccm-2007-sp2-r3-error-80072ee7?forum=configmgrosd
    I have some free manuals http://1drv.ms/1kk6u6j

  • How to use two different boot images in the same task sequence

    I have a need to use Two boot images in the same task sequence. The reason is I'm deploying ZTI to McAfee encrypted devices which I have already done with McAfee v6 Encryption successfully.
    Here's where my problem comes in. We are about to deploy McAfee v7 which means we will have a mix of v6 and v7 in our environment. I must have two special Boot images one with v6 drivers and one with v7 drivers in order for my process to work. I don't see
    a way right now to assign more than one boot image to a task sequence. Is there any way to do this?
    If I can't do that then I will have to create two task sequences and target collections based on the Endpoint Encryption version to deploy to.
    If anyone has suggestions it would be much appreciated. Thank you

    Have you tested copying those files to %windir%\system32\drivers during the WinPE session (just enable commandline support to your boot image) to see if they need to be in there before the OS start? Test that and if they don't need to be there during the
    boot up of WinPE then:
    Create two packages (v6 and v7)
    "Run command line", use the package created earlier and just use "copy /Y .\*.* %windir%\system32\drivers" ...again, this should be run according to your needs, variable or some other check like I said

  • 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>

  • Deploying the SCCM 2012 Client to WES 7 devices that are locked down with the FBWF using 2007 task sequence via WEDM.

    I'm wondering how people are migrating their embedded devices that are using the FBWF. I've done some googling and it seems like most people are just re-imaging the devices and after migrating a single device i see why. Its not a pretty process. This will
    be a long description but ultimately my question stems more from trying to find a better way to execute the device migration from 2007 to 2012.
    Some back ground on my situation might be in order here. I'm in the process of wrapping up our 2007 to 2012 migration. We have a 2007 infrastructure that was a central server with 2 primaries and 286 secondary site servers. I've consolidated that to a single
    2012 primary site server that hosts all the main roles. There are 2 more servers in the data centers both operating solely as push distribution points I'll refer to them as 2012 01 02 and 03. I'm over half way through the migration and so far haven't needed
    to offload any site roles. There are almost 10,000 clients now reporting to the 2012 site server and almost a 100 field servers pulling content from 2012 02 as their source dp as pull dp is the only way forward for this many devices. I've read the horror stories
    of trying spin up 200 plus push dps. We are running PKI. I'm at the point now where i need to start migrating the Windows Embedded Seven Standard clients that have the 2007 sccm client on them with WEDM for write filter handling.
    What i'm wondering is if anyone has any pointers for me regarding migrating the WES 7 devices. My plan that i've come up with is to somehow script the process using a 2007 WEDM Task Sequence to try and migrate them over to 2012. Things are complicated as
    I need to somehow script the install, the policy checkin, hardware inventory, software inventory, and validate the SCEP client installs before I reboot the device one last time to enable the FBWF. How I handled the SCCM 2007 client install on these devices
    when they were provisioned was to just create a batch file that would sleep for ten minutes then check to see if the inventoryagent.log file had been created yet. I realize now that is inefficient as i can kick off the inventory using a WMI method once the
    client has installed. Also I need to make sure the machine gets its first policy as that is how it creates the communication using PKI through that first policy transfer and that also finalizes the client install. The biggest piece i'm uncertain about in this
    regard is the SCEP client.
    I had to change the SCEP client install from yes to no in the default client settings as we have some Mcaffee servers that can't have the SCEP client on them. I have incremental updates enabled on the collection that has the policy that installs the SCEP
    client but this will take an unknown amount of time unless i force the environment to update as the device starts in 2012 install, or if I could kick off the SCEP isntall... IDK. I'm also wondering if i should keep the device in the migration process until
    i validate it has its proper scep policy applied which I believe can be validated by a registry key somewhere.
    Once the 2012 client gets installed will that cause it to lose its place within the 2007 Task Sequence? Considering its going to take a minimum of 2 reboots I'd normally use the task sequence to handle its progression through the process.
    I'm also considering trying to use an Orchestrator runbook, as that would be a good way to keep track of the migration process as each device migrates. Especially since this might take several seperate scripts.
    I'm going to take a stab at scripting the migration process, but if anyone has any pointers that might make this a less complicated I'd really appreciate it as I've got about 3000 of these devices that need to be migrated over. The other things i've learned
    the hard way is any time you have something this complicated over the course of 3000 devices you will run into unknowns and the failure rate increases. I'm in the precarious position of having to not only build this process out but in some situations have
    it complete in the shortest amount of time possible as we have sites running 24x7. I know the end users behavior all to well and they will just keep hitting the power button sometimes even though their not supposed to so they can get their device functional
    again. In those situations i'd end up, if i'm lucky with a device that no longer has a healthy SCCM client in either environment and the write filter disabled.
    So like i said any pointers anyone could throw my way i'd really appreciate. I manually went through the migration process on a single device for proof of concept and ended up with almost 2 pages of pseudo code for my migration script/scripts.
    Thanks,
    -K.R.

    Hi,
    In R2 there are some new variables you can use to solve this,
    http://ccmexec.com/2014/12/smstsmplistrequesttimeout-value-in-milliseconds/
    In Sp1 though adding a step to sleep for 2-5 minuter after reboot and before the application install step is a common workaround.. a powershell command with "Start-Sleep
    -s 120" should do it. 
    /Jörgen
    -- My System Center blog ccmexec.com -- Twitter
    @ccmexec

Maybe you are looking for

  • Ipad 2 Print button does not work after 6 upgrade?

    Since we upgraded to iOS6, our print button does not work and does not find our printer.  It was working fine until iOS6.  Called an Apple Technician and he had me reset, which wiped out all of my saved information but didn't fix the print.  He then

  • Where to Load Movies

    I have my main file with 3 links. One of these links is a photo gallery. When the link is clicked, I have a strip of thumbnails that opens from the bottom of the main page. Then I want to click the thumbnail that loads another swf file. At the moment

  • NAVS not getting picked up on a PO

    Hello, Whilst trying to create a PO; we've observed that condition type NAVS is not getting defaulted.  We've checked that the condition records have been maintained/plant & material master indicator has been maintained. Anyone of you has had this ex

  • Insecure Startup Item Disabled

    Hello I recently installed a HP Printer (HP PSC 1410 All In One) to my MacBook system running Snow Leopard 10.6.3 and just after I installed I uninstalled when finished. Since the uninstall however, I have been getting an error message at startup rea

  • Airport download speeds slow when extending display to LCD

    When I connect my Macbook using the mini display to DVI, DVI to HDMI adapter to my LCD TV, my download speeds pretty much fall off to nothing. When I disconnect the display adapter, the connection resumes. Any ideas?