none
ZTIWindowsUpdate.wsf fails to run in cmd prompt or when deploying via lite touch RRS feed

  • Question

  • Was really hoping someone could shed some light on an issue that I'm having.  I'm testing MDT 2013 - Lite Touch in a VMware based lab environment.  I added an 8.1 ISO to the deployment workbench, deployed it to a VM, captured that image as a WIM, and have been practicing deploying that WIM to another blank VM.  I've mostly been following the quick reference guide.  I've had good success pushing the OS and post deployment apps to a VM via standard task sequence, but problems arise when I enable the pre/post application windows update tasks in the sequence. 

    A little background, we have a WSUS 3.0 server that we use for approximately 150+ users.  It is setup on port 80.  I have the property added to my customsettings.ini file and have updated my deployment share, but always get failures for running ZTIWindowsUpdate at the end of the sequence.  When I set LT to join the machine to the domain, I have not been specifying an OU so the machine always shows up in our default Computers OU after sysprep.  That's fine, except that we have a separate OU dedicated for WSUS machines that is managed via Group Policy.  I'm not sure if I should be forcing a target OU of WSUS via CS.ini or if I should be doing something else.

    I am getting all sorts of fun errors in the BDD and WindowsUpdate logs, none of which are very helpful.  For a while I was just getting errors like "ZTI ERROR - Unhandled error returned by ZTIWindowsUpdate."  The logs seemed to indicate that it was locating updates but as soon as it said "downloading" it would fail with a generic message.  I tried mounting the share locally and running ztiwindowsupdate.wsf via cmd prompt and started getting messages like "failure ( 9902 ): ztiwindowsupdate has run and failed too many times" and my new favorite:

    ZTI ERROR - Unhandled error returned by ZTIWindowsUpdate: Invalid root in registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\UseWUServer"

    Can anyone actually explain to me what ZtiWindowsUpdate.wsf really does?  I'm talking about from a high level workflow perspective, not a "read my comments" perspective.  I don't understand the logic behind the part that's supposed to prevent infinite loops, it seems like it's very easy to hit the 7 count limit and with no ability to reset the count besides increasing the max number.  Why am I even hitting the limit when all I am doing is running the script from cmd prompt?

    I've considered creating a separate WSUS server in my test lab, but I would at least like to get the ZtiWindowsUpdate script working w/o WSUS first (over the Internet) just to prove that it works as it should.

    Any help is appreciated.  Sorry if it sounds like I am pulling my hair out (I am).  I have a lot of respect for the MDT guys, they've made a fine product and I am excited to implement it over the next few months.



    Thursday, October 9, 2014 3:26 AM

Answers

  • Ok, I think I figured it out.  The ZTIWindowsUpdate.wsf was throwing registry errors because the cmd prompt window wasn't run as admin and therefore couldn't get access to the registry hive (I think).  I made this determination after creating a WSUS test server and manually specifying the server name/port like so:

    "Open GPEdit.msc expand Computer Configuration -> Administrative Templates -> Windows Components -> Windows Updates and set the Specify Intranet Microsoft update service location to http://<WSUS server>:8530 in my case http://RDS-Ops:8530"

    After doing that, the machine showed up in WSUS under Unassigned Computers, so I knew the configuration was correct in the registry.  When I tried running cmd prompt as admin, I was unable to CD into the mapped drive that was pointing to the deployment share.  I think that may be because the drive was mapped from a non-elevated cmd prompt.

    In any event, I dropped the mapped drive, did a manual "net use" in cmd prompt as administrator and mapped the drive again.  w/ cmd prompt running elevated, I was able to CD into the mapped drive and run the script fine.  It pulled down updates, and champagne comes down from the heavens.

    I think I would have figured this out sooner if I had not been so stubborn and created a test WSUS.  One of my coworkers manages our other WSUS, so I was hesitant to futz around in there.  Having the test WSUS box made things significantly easier and I was able to quickly pinpoint the problem and get things working.

    I'm still a little fuzzy on how ZTIWindowsUpdate works, but from what I've read it does not read from CS.ini.  Your WSUS property in CS.ini gets thrown into the registry (at above GPO path) when you run the litetouch install.  Or at least that's my understanding.

    Anyway, thanks for listening to my rant.  Hopefully this helps someone.

    Thursday, October 9, 2014 7:38 PM
  • OK, I need to take a step back here and ask you to remind me where we are at here. This thread has morphed, and although it may seem obvious to you where the current problem is, I can't follow everything here. TLDR. :^)

    I can see the windowsupdate.log file, however I don't see any obvious problems other than update:

    03F1A9EE-3F98-4DD2-80C1-B4D2155E5D29 -  Definition Update for Windows Defender - KB2267602 (Definition 1.137.1371.0)

    I have come to hate these definition updates, and spent a lot of time this week debugging them. Please ensure that you have properly cleaned up your WSUS server, and that all superseded updates are removed. (Additionally, I would try excluding this update from your ZITWindowsUpdate.wsf searches using WUMU_ExcludeID001 = XXX )

    I have observed that with these security updates, you can get some updates to pass during one run, but fail in another. Are you *always* running ZTIWindowsUpdate form within the context of the Task Sequence *first* or have you tried running ZTIWindowsUpdate.wsf on a clean machine manually first?  You have made an assumption that the failure is because ZTIWindowsUpdate is being run within the context of the MDT TaskSequence (and runs successfully when run manually), however the real problem may be that it's because you always run ZTIWindowsUpdate from within the context of MDT, and (say after a reboot), when you re-run it again it passes.

    I don't have this issue on my WSUS + Windows 8.1 environment. Hearing that you are replicating your sources from a W2k3 server seems very suspicious to me. You're using a server OS that is *OVER* 10 years old, and will End of Life within a year. Sounds like a great time to build a new 2012 R2 server with WSUS updates from Microsoft not from the old server.


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    • Marked as answer by resident1155 Monday, October 27, 2014 3:18 PM
    Saturday, October 25, 2014 5:34 PM
    Moderator

All replies

  • Ok, I think I figured it out.  The ZTIWindowsUpdate.wsf was throwing registry errors because the cmd prompt window wasn't run as admin and therefore couldn't get access to the registry hive (I think).  I made this determination after creating a WSUS test server and manually specifying the server name/port like so:

    "Open GPEdit.msc expand Computer Configuration -> Administrative Templates -> Windows Components -> Windows Updates and set the Specify Intranet Microsoft update service location to http://<WSUS server>:8530 in my case http://RDS-Ops:8530"

    After doing that, the machine showed up in WSUS under Unassigned Computers, so I knew the configuration was correct in the registry.  When I tried running cmd prompt as admin, I was unable to CD into the mapped drive that was pointing to the deployment share.  I think that may be because the drive was mapped from a non-elevated cmd prompt.

    In any event, I dropped the mapped drive, did a manual "net use" in cmd prompt as administrator and mapped the drive again.  w/ cmd prompt running elevated, I was able to CD into the mapped drive and run the script fine.  It pulled down updates, and champagne comes down from the heavens.

    I think I would have figured this out sooner if I had not been so stubborn and created a test WSUS.  One of my coworkers manages our other WSUS, so I was hesitant to futz around in there.  Having the test WSUS box made things significantly easier and I was able to quickly pinpoint the problem and get things working.

    I'm still a little fuzzy on how ZTIWindowsUpdate works, but from what I've read it does not read from CS.ini.  Your WSUS property in CS.ini gets thrown into the registry (at above GPO path) when you run the litetouch install.  Or at least that's my understanding.

    Anyway, thanks for listening to my rant.  Hopefully this helps someone.

    Thursday, October 9, 2014 7:38 PM
  • YEa, most MDT scripts will implicitly require Administrative privileges. ZTIWIndowsUPdate can run on it's own quite well. And you can add parameters to the command line:

    cscript.exe \\server\share$\Scripts\ZTIWindowsUpdate.wsf /debug:true /WSUSServer:http://WSUS:1234


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    Saturday, October 11, 2014 12:25 AM
    Moderator
  • Thanks for the reply Keith. Question though, if the scripts require Admin privileges, how would ZTIWindowsUpdate work after a reboot?  I seem to get errors every time i deploy a WIM w/the windows update task enabled.  It works fine if I run it from an elevated cmd prompt on an already deployed machine.

    Is the Lite Touch PE environment supposed to automatically enable elevation for cmd prompt?  I can enable debug:true, but I'm just trying to get a high level understand of how this is supposed to work.  Thanks.

    FWIW, here is my ZTIwindowsupdate.log after deploying (litetouch) to a VM (vmxnet3):

    <![LOG[Microsoft Deployment Toolkit version: 6.2.5019.0]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[The task sequencer log is located at C:\Users\username\AppData\Local\Temp\SMSTSLog\SMSTS.LOG.  For task sequence failures, please consult this log.]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Begin Windows Update. Reboot=[]  Retry=[]  Count = 0]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Property MSIT_WU_Count is now = 1]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Configuring client to use WSUS server http://wsus_test.domain1.com:8530]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Configuring Windows Update settings (manual update, use server)]LOG]!><time="14:25:52.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Archive NoAUtoUpdate State: Was [<empty>].]LOG]!><time="14:25:53.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Property NoAutoUpdate_Previous is now = <empty>]LOG]!><time="14:25:53.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Windows Update Agent verion 8 found, OK to continue]LOG]!><time="14:25:57.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Ready to Opt-In to Microsoft Update: WUA Version: 7.9.9600.16403]LOG]!><time="14:25:57.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Microsoft Update Service:  Enabled = False]LOG]!><time="14:25:57.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Command Line Procesed Query=False Registered=False  UpdateCommand=[IsInstalled = 0 and IsHidden = 0]]LOG]!><time="14:25:57.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Start Search...]LOG]!><time="14:25:57.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 8137a5f5-f19a-4e63-9cca-a14b8448612b - Update for Windows 8.1 for x64-based Systems (KB2884846) - 9 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 10b1f6b6-2444-4c9c-a252-ddfbc5781b65 - Update for Windows 8.1 for x64-based Systems (KB2902892) - 603 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 3092fa5a-1396-4bdf-a703-b79e027ad71b - Update for Windows 8.1 for x64-based Systems (KB2887595) - 199 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - c4da2049-9376-4926-92b8-b9156296dc50 - Update for Windows 8.1 for x64-based Systems (KB2903939) - 47 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 3cb8e7e8-7e96-46e4-804c-3515ebda9cee - Update for Windows 8.1 for x64-based Systems (KB2911106) - 73 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - c523679a-891c-4d1f-ac3c-8bf9af4c7b07 - Update for Windows 8.1 for x64-based Systems (KB2913270) - 4 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - ad4fd0f3-15c7-41d7-a45a-415469df5faa - Update for Windows 8.1 for x64-based Systems (KB2913760) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 1b0c2048-9fe3-48e5-a811-2527199da5c3 - Update for Windows 8.1 for x64-based Systems (KB2919394) - 46 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 6a76a4a0-ef34-440a-a37e-65f279368c55 - Update for Windows 8.1 for x64-based Systems (KB2939087) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - b2493bae-b6ad-4971-a364-91873adbb3c7 - Update for Windows 8.1 for x64-based Systems (KB2928680) - 20 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - f4af0d7b-aab4-4533-a465-8f6c9d010c18 - Update for Windows 8.1 for x64-based Systems (KB2975061) - 10 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - ead8176f-4d21-4567-a5b4-c29a0598744f - Update for Windows 8.1 for x64-based Systems (KB2962409) - 2 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - e631da4a-0ee6-4ab8-b2bf-0a3bfb843ce7 - Security Update for Windows 8.1 for x64-based Systems (KB2892074) - 505 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 416de864-839a-4a61-907f-d18cabcc6dda - Security Update for Windows 8, 8.1 and Windows Server 2012, 2012 R2 (KB2917500) - 195 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - d2dc9295-35f7-49fe-9301-6aca7ba2127b - Security Update for Windows 8.1 for x64-based Systems (KB2909210) - 454 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 79fa380b-ffdd-4051-8e15-5498f26b38de - Security Update for Microsoft .NET Framework 4.5.1 on Windows 8.1 and Windows Server 2012 R2 for x64-based Systems (KB2898871) - 35 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a7e57c92-62fa-4844-948e-31187fd48e81 - Cumulative Security Update for ActiveX Killbits for Windows 8.1 for x64-based Systems (KB2900986) - 33 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - d43d128d-590b-45bd-99cc-0bdab0cb5663 - Security Update for Microsoft .NET Framework 4.5.1 on Windows 8.1 and Windows Server 2012 R2 for x64-based Systems (KB2901128) - 4 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - bac36bc2-6707-4805-8a2f-641697752e8a - Security Update for Windows 8.1 for x64-based Systems (KB2862152) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 489dab1b-bca6-4525-b3f1-af3968d9f0d6 - Security Update for Windows 8.1 for x64-based Systems (KB2868626) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 484d6ce8-3767-481a-bc56-f0f2ff473329 - Security Update for Windows 8.1 for x64-based Systems (KB2893294) - 95 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - c95a5cb5-949f-44c5-935b-6eb45d0d45e9 - Security Update for Windows 8.1 for x64-based Systems (KB2912390) - 3 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 4d8287bc-cdad-4e89-b370-cfe48fc5afb9 - Security Update for Windows 8.1 for x64-based Systems (KB2922229) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 0148b3b6-ef90-4529-9549-b02e29fb8042 - Security Update for Microsoft .NET Framework 4.5.1 on Windows 8.1 and Windows Server 2012 R2 for x64-based Systems (KB2931366) - 583 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - d0cf2d97-5d5f-41d0-a1ee-b7cd88dab22d - Security Update for Windows 8.1 for x64-based Systems (KB2962123) without KB2919355 - 13 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - cb2a1fd6-6775-45bb-9d00-037555830012 - Security Update for Windows 8.1 for x64-based Systems (KB2964757) without KB2919355 - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 0bbfeb3b-3605-4a0f-9b9d-255e4f0e461f - Security Update for Windows 8.1 for x64-based Systems (KB2961908) without KB2919355 - 29 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 7169eda1-4c07-4045-b7ae-1d81f1405891 - Security Update for Windows 8.1 for x64-based Systems (KB2966631) without KB2919355 - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - ade6b620-5cc1-4470-b974-474ad29084a2 - Security Update for Windows 8.1 for x64-based Systems (KB2965161) without KB2919355 - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a2e511eb-f61f-4438-aae5-831c374326fc - Security Update for Windows 8.1 for x64-based Systems (KB2961858) without KB2919355 - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 5b3dc839-7dd3-4af0-840b-9aec2904cec7 - Security Update for Windows 8.1 for x64-based Systems (KB2965155) without KB2919355 - 924 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a99e3511-d455-45f6-a743-a46181acd8bf - Security Update for Windows 8.1 for x64-based Systems (KB2966034) without KB2919355 - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 2e7c7c49-1119-4ce1-9269-0cdf5eb098b9 - Security Update for Windows 8.1 for x64-based Systems (KB2973932) without KB2919355 - 444 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 611cbfa3-b207-44a6-abd1-51dff388a1c9 - Security Update for Windows 8.1 for x64-based Systems (KB2973906) without KB2919355 - 4 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 2589199c-a314-4041-8c00-5a526b079c98 - Security Update for Windows 8.1 for x64-based Systems (KB2974286) without KB2919355 - 4 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 48ea2a96-711a-4b58-9ca9-617ccdba00c2 - Security Update for Windows 8.1 for x64-based Systems (KB2973408) without KB2919355 - 276 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 0fe8afd9-1619-4a95-a4dd-640eb497b548 - Security Update for Windows 8.1 for x64-based Systems (KB2975625) without KB2919355 - 961 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - b883d041-16c8-4638-9c5c-8380dac8f552 - Security Update for Internet Explorer Flash Player for Windows 8.1 for x64-based Systems (KB2974008) without KB2919355 - 10 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - de76a48c-6e95-40be-82a3-c33df9ff2910 - Cumulative Security Update for Internet Explorer 11 for Windows 8.1 for x64-based Systems (KB2963952) without KB2919355 - 35 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 1b89df51-ab48-4536-9941-4f50e6bd8965 - Definition Update for Windows Defender - KB2267602 (Definition 1.137.1371.0) - 86 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 0bb87aac-9ba7-4ace-9c25-eca9579105d1 - Update for Root Certificates for Windows 8.1 for x64-based Systems [November 2013] (KB931125) - 447 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 2bdf3236-6eff-4c52-89e4-29c13f243652 - Update for Windows 8.1 for x64-based Systems (KB2909569) - 510 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 78a67a3c-1375-474c-95a2-2a699bb57b96 - Update for Microsoft Camera Codec Pack for Windows 8.1 for x64-based Systems (KB2899189) - 13 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - cb571733-23e4-45e5-8593-aab350a6c0c1 - Update for Windows 8.1 for x64-based Systems (KB2917993) - 367 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 6a1e6b98-9e72-467b-961e-dcb80fec8177 - Update for Windows 8.1 for x64-based Systems (KB2923300) - 10 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - fdd927e9-5969-48bc-94f8-c41b879c2bf6 - Update for Windows 8.1 for x64-based Systems (KB2843630) - 684 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 3d419ae1-ad9d-49d2-b166-4b83e6a87703 - Update for Windows 8.1 for x64-based Systems (KB2917929) - 1 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 851b3950-02b0-4665-a62f-69b12e4dd470 - Update for Windows 8.1 for x64-based Systems (KB2923528) - 62 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 498bc2c3-0811-456b-aa07-36d89d1f9d0a - Update for Windows 8.1 for x64-based Systems (KB2913152) - 320 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a2479a38-36af-4a5b-bff1-e1cbf8fa88fc - Update for Windows 8.1 for x64-based Systems (KB2904266) - 991 KB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 193a989d-39e4-4da1-a19d-91728c98c0e9 - Update for Windows 8.1 for x64-based Systems (KB2894853) - 4 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - fe6baf27-19b4-46d0-8d87-5b545065f0eb - Definition Update for Windows Defender - KB2267602 (Definition 1.169.2151.0) - 33 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 45c7bd01-8eae-4bac-b39f-ed6ef71508a9 - Update for Windows 8.1 for x64-based Systems (KB2962182) - 39 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 5cb07bc7-0a70-44d8-924b-89f3f6e5ce4b - Update for Windows 8.1 for x64-based Systems (KB2962193) - 16 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 6d0e879d-22d1-4581-b29f-3cb672612630 - Update for Windows 8.1 for x64-based Systems (KB2962194) - 376 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 66475d31-ce08-4f21-b2a1-039d22b6b1fa - Update for Windows 8.1 for x64-based Systems (KB2962191) - 25 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - f0aec0e4-3c29-4c2c-a5b8-0a43b605ae79 - Update for Windows 8.1 for x64-based Systems (KB2962188) - 19 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 96a0cf4b-670d-4b8a-a6ba-252dcc17e981 - Update for Windows 8.1 for x64-based Systems (KB2962195) - 7 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 92994a75-6f61-4374-ad19-333f5c77b07a - Update for Windows 8.1 for x64-based Systems (KB2962196) - 7 MB]LOG]!><time="14:26:21.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 580ab1d7-eef7-45da-b594-4ce25a981ab1 - Update for Windows 8.1 for x64-based Systems (KB2962199) - 19 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a2b31e44-70ad-4018-a6f2-4dd90c2c4b49 - Update for Windows 8.1 for x64-based Systems (KB2962201) - 46 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 396e1852-d75a-4f1d-919e-4de2d5ae4b22 - Update for Windows 8.1 for x64-based Systems (KB2962184) - 42 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 2cfac156-def6-4122-b798-5df45b6bee6d - Update for Windows 8.1 for x64-based Systems (KB2962183) - 31 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 374ee948-03c6-4184-8fda-66af02d7ae63 - Update for Windows 8.1 for x64-based Systems (KB2962200) - 5 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a67b2e59-2cbb-43e2-b477-731e3458153a - Update for Windows 8.1 for x64-based Systems (KB2962197) - 7 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - e78d374e-5858-4f2c-872d-8105997a448e - Update for Windows 8.1 for x64-based Systems (KB2962198) - 7 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 429389cc-e1ba-46dc-930b-8160ce562531 - Update for Windows 8.1 for x64-based Systems (KB2962190) - 20 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - a9434394-d1fa-4345-a5a5-92d5ae775f4a - Update for Windows 8.1 for x64-based Systems (KB2962185) - 32 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 1541e113-76c3-4901-927b-94e1c2887427 - Update for Windows 8.1 for x64-based Systems (KB2962186) - 24 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 2a6725bc-cc6d-45a6-b2b7-bf83a2b65086 - Update for Windows 8.1 for x64-based Systems (KB2962189) - 26 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 4c784977-3fd5-40da-b658-cd18ca9fb3a3 - Update for Windows 8.1 for x64-based Systems (KB2962187) - 21 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 0fa80a3c-aff7-49ac-a08c-d9136b66bac8 - Update for Windows 8.1 for x64-based Systems (KB2962192) - 18 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - cbf1983a-2c44-47d1-a594-072ef7ceeea1 - Update for Windows 8.1 for x64-based Systems (KB2990967) - 29 KB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - b5d6d79c-69cf-40ef-84bc-eb686c57b9bc - Security Update for Internet Explorer Flash Player for Windows 8.1 for x64-based Systems (KB3001237) - 17 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 23d6614c-b813-446d-ac4f-e875ed05929f - Windows Malicious Software Removal Tool for Windows 8, 8.1 and Windows Server 2012, 2012 R2 x64 Edition - October 2014 (KB890830) - 31 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[INSTALL - 48e22d79-45c1-4dbb-b950-2221007eb618 - Definition Update for Windows Defender - KB2267602 (Definition 1.185.3788.0) - 61 MB]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Scan complete, ready to install updates. Count = 76]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[Begin Downloading...]LOG]!><time="14:26:22.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    <![LOG[ZTI ERROR - Unhandled error returned by ZTIWindowsUpdate:  (-2145091577  0x80248007)]LOG]!><time="14:27:35.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="3" thread="" file="ZTIWindowsUpdate">
    <![LOG[Event 41002 sent: ZTI ERROR - Unhandled error returned by ZTIWindowsUpdate:  (-2145091577  0x80248007)]LOG]!><time="14:27:35.000+000" date="10-23-2014" component="ZTIWindowsUpdate" context="" type="1" thread="" file="ZTIWindowsUpdate">
    
    • Edited by resident1155 Thursday, October 23, 2014 10:20 PM
    Thursday, October 23, 2014 9:12 PM
  • Question though, if the scripts require Admin privileges, how would ZTIWindowsUpdate work after a reboot?  I seem to get errors every time i deploy a WIM w/the windows update task enabled.  It works fine if I run it from an elevated cmd prompt on an already deployed machine.

    I don't understand your question, how are you running ZTIWindowsUpdate then? If you are running within MDT, then you can assume that ZTIWIndowsUpdate is being run elevated, all steps in the task sequence are elevated. IF you are *NOT* running within MDT, then this is not supported. :^)

    Is the Lite Touch PE environment supposed to automatically enable elevation for cmd prompt?  I can enable debug:true, but I'm just trying to get a high level understand of how this is supposed to work.  Thanks.

    Why would you run ZTIWIndowsUpdate.wsf within WinPE? ZTIWindowsUpdate does not work against offline Operating Systems, so if you run within WInPE, then you are trying to update WinPE itself, and that won't work because the Windows Update Agent is not installed.

    Totally confused here.


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    Friday, October 24, 2014 3:54 AM
    Moderator
  • Keith, I apologize for the convoluted explanation, I'm still somewhat fuzzy on terminology.  Let me clarify.  

    I have a captured WIM from a Win8.1 reference machine that I am using to deploy to a target VM that has a Vmxnet3 NIC.  I added the vmx drivers in the deployment workbench and enabled the Windows Update tasks in the task sequence. I then update the deployment share and mount my LiteTouchPE_x64.iso to the VMs cd-rom and boot from this environment.

    When I boot to the LiteTouchPE_x64.iso, it runs through the wizard just fine.  I select the OS, enter the administrator credentials, and enter the share credentials and off it goes installing the OS. That's fine, until it boots to the OS and continues with Windows Updates.  Based on what I see in the logs, it seems like MDT is able to find the appropriate updates on the WSUS server, but fails to download and install them.  The above ZTIWindowsUpdate.log is what i get on the target VM after deployment.

    As I mentioned before, I am able to run ZTIWindowsUpdates from an elevated cmd prompt on the target VM fine. But I'm confused about why the Windows Update task fails during the LiteTouch standard client task sequence.  FWIW, I've also tried deploying a post-OS task sequence to the target machine w/ the WindowsUpdates task enabled and that also fails to download/install updates.

    Any help is appreciated.  Thanks Keith.

    Friday, October 24, 2014 2:55 PM
  • As I mentioned before, I am able to run ZTIWindowsUpdates from an elevated cmd prompt on the target VM fine. But I'm confused about why the Windows Update task fails during the LiteTouch standard client task sequence.  FWIW, I've also tried deploying a post-OS task sequence to the target machine w/ the WindowsUpdates task enabled and that also fails to download/install updates.

    From which account are you running the ZTIWindowsUpdate.wsf command manually? If you are running from an account other than the local administrator, permissions on the WSUS server could easily explain why this is failing.

    Otherwise best to look at the c:\windows\WindowsUpdate.log file to see what the Windows Update Agent had to say about it. If you still need help, copy the logs to a public site like OneDrive and share the link.


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    Friday, October 24, 2014 5:09 PM
    Moderator
  • I think I jumped the gun a little, when I said that I had run ZTIWindowsUpdate.wsf from cmd prompt successfully, I hadn't actually waited to see if it would finish.  It was also failing to download updates.  On the target machine, I decided to open WU from control panel and just run the updates manually.  It acts like it is installing the updates, but it doesn't list the KBs that it's installing.  This is starting to look a lot like this thread:

    https://social.technet.microsoft.com/Forums/en-US/2b56b431-34b6-4b25-8d83-cc46ef825fc6/ztiwindowsupdate-failing?forum=mdt

    I'm new to setting up WSUS, so when I initially set it up I forgot to check the box to set it up as replica.  I was pulling down updates from the Internet for a while, then I changed it to pull down updates and use permissions defined by our main WSUS server.  I'm guessing that really screwed things up, and I'm inclined to start from scratch at this point with a fresh Windows Server 2012 box for WSUS.

    Will let you know if this fixes it.  Thanks for baring with me.

    Friday, October 24, 2014 5:18 PM
  • As I mentioned before, I am able to run ZTIWindowsUpdates from an elevated cmd prompt on the target VM fine. But I'm confused about why the Windows Update task fails during the LiteTouch standard client task sequence.  FWIW, I've also tried deploying a post-OS task sequence to the target machine w/ the WindowsUpdates task enabled and that also fails to download/install updates.

    From which account are you running the ZTIWindowsUpdate.wsf command manually? If you are running from an account other than the local administrator, permissions on the WSUS server could easily explain why this is failing.

    Otherwise best to look at the c:\windows\WindowsUpdate.log file to see what the Windows Update Agent had to say about it. If you still need help, copy the logs to a public site like OneDrive and share the link.


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    I am always running it on the Administrator account on the target machine.  

    I rebuild the WSUS server, making it a replica of our main WSUS server.  Deployment on the target still completes with ZTIWindowsUpdate errors.

    Here is the log after deploying to a fresh target VM:

    https://drive.google.com/file/d/0B5G9Zwc89uMCenFMVVlyVzJlRXM/view?usp=sharing

    I should note that the parent WSUS server is on WSUS 3.0 (win2k3); the replica is on WSUS 4.0 (win2012).  I wouldn't think that to be an issue since we've had no issues installing updates from the parent WSUS server on 8.0 and 8.1 machines.

    Side note, the domain in this log is different (than above) as I wanted to keep that information private.

    Thanks!
    Saturday, October 25, 2014 2:59 PM
  • OK, I need to take a step back here and ask you to remind me where we are at here. This thread has morphed, and although it may seem obvious to you where the current problem is, I can't follow everything here. TLDR. :^)

    I can see the windowsupdate.log file, however I don't see any obvious problems other than update:

    03F1A9EE-3F98-4DD2-80C1-B4D2155E5D29 -  Definition Update for Windows Defender - KB2267602 (Definition 1.137.1371.0)

    I have come to hate these definition updates, and spent a lot of time this week debugging them. Please ensure that you have properly cleaned up your WSUS server, and that all superseded updates are removed. (Additionally, I would try excluding this update from your ZITWindowsUpdate.wsf searches using WUMU_ExcludeID001 = XXX )

    I have observed that with these security updates, you can get some updates to pass during one run, but fail in another. Are you *always* running ZTIWindowsUpdate form within the context of the Task Sequence *first* or have you tried running ZTIWindowsUpdate.wsf on a clean machine manually first?  You have made an assumption that the failure is because ZTIWindowsUpdate is being run within the context of the MDT TaskSequence (and runs successfully when run manually), however the real problem may be that it's because you always run ZTIWindowsUpdate from within the context of MDT, and (say after a reboot), when you re-run it again it passes.

    I don't have this issue on my WSUS + Windows 8.1 environment. Hearing that you are replicating your sources from a W2k3 server seems very suspicious to me. You're using a server OS that is *OVER* 10 years old, and will End of Life within a year. Sounds like a great time to build a new 2012 R2 server with WSUS updates from Microsoft not from the old server.


    Keith Garner - Principal Consultant [owner] - http://DeploymentLive.com

    • Marked as answer by resident1155 Monday, October 27, 2014 3:18 PM
    Saturday, October 25, 2014 5:34 PM
    Moderator
  •  Keith, I couldn't find any documentation that says whether or not the w2k3 + WSUS 3.0 server could replicate to a higher WSUS version/OS server, but I'm also skeptical.  I rebuild the WSUS VM w/ a clean 2012 OS and decided to pull down updates over the Internet, rather than replicate.

    WSUS is still downloading updates, but ZTIWindowsUpdate no longer fails, it actually finds a few updates, then downloads and installs them successfully.  This is actually the first time that I've seen the script work as expected (really impressive, btw).  I expect the number of available updates to change as WSUS finishes downloading updates.  I have setup automatic approval of updates too.

    I'll definitely remove the superseded updates and add exclusions just to be on the safe side.  I couldn't ever get updates to pass during any of my runs (whether in MDT or running manually), so I'm convinced that the W2k3 server wasn't replicating over Metadata (or maybe even update files) correctly.  At this point, I think we can put this thread to rest as I now have a much better understanding of how WSUS works and know what pitfalls to avoid.

    Appreciate all your help Keith - thanks for steering me in the right direction.


    Monday, October 27, 2014 3:18 PM
  • One more update...turns out I was mistaken, our main WSUS server is using server 2008r2 w/ WSUS 3.0.  Moot point as it turns out.

    Keith's initial stab at the problem was right, the reason why I couldn't download/install updates was due to KB2267602.  I blocked that update in customsettings.ini by using WUMU_ExcludeKB001=2267602.  There were a number of these definition updates on our WSUS server, most of which were "declined" but a few were left approved.

    The 2012 WSUS test box was working great because all of the KB2267602 updates were declined...I'm guessing that happened when I ran the cleanup wizard to remove superseded updates.

    Maybe the cleanup wizard doesn't do as good of a job cleaning up superseded updates on WSUS 3.0? Just a guess anyway, could have been something that we missed on our end.  I know that we do actively cleanup superseded updates on our 3.0 box.

    Anyway, Keith is a boss, thanks again.


    Thursday, November 6, 2014 5:18 PM