If your OS is 2008R2 or newer then you wont need to do this as the drivers are already included. But what if you have a machine that you want to put the drivers in before you virtualise or migrate it. Well if you mount the ISO and run it this happens;
Unsupported Guest Environment
The Hyper-V integration services can only be installed inside of a virtual machine running Hyper-V
Bah! You are not the boss of me! I want the drivers in here because I’m about to virtualise it!
Solution
Mount the Integrations Services ISO on the machine (or open it with 7Zip and treat it like a zip file)
If you have Hyper-V 2016 or newer and cant find the iso, Microsoft handily don’t include any more, because it’s a massive 29Mb is size? (Yeah I don’t understand either?) Here’s a copy. Go to the x86 or amd64 directory depending on whether you are x32 or x64 bit. locate the Windows{Version}-HyperVIntegrationServices-{processor-version}.cab that matches your machine and copy it to your desktop. Then open it, select all the files.
Open an administrative command prompt, then change directory to the folder you extracted all the files into. Run the following command;
[box]for /f %i in (‘dir /b /s *.inf’) do pnputil.exe -i -a %i[/box]
It will run though and install all the drivers, you may get some warnings that some of the drivers are unsafe or unsigned. Just say install them anyway.
Note: If you are on Server 2003, then there are a bunch of KB updates on the CD that you will also need to install.
Related Articles, References, Credits, or External Links
Assuming that’s all done, your task now is to upgrade your hosts, if you have a vanilla VMware ESXi version installed. You COULD simply SSH into the host, and execute the following commands;
Well that’s great but if you are using a custom ESXi image, the process won’t even start, you simply get warned that this won’t work, as it will break all the vendor specific drivers/software, (which is a good thing I suppose, the warning I mean, not the breaking things!)
Still, if you have a vendor modified copy of ESX what do you do? Well the following procedures will work for any version of the software, either vanilla VMware or HP/Dell/IBM etc. AND IT RETAINS ALL THE HOST SETTINGS, i.e. licences, vSwitches (standard and distributed), certificates etc.
Solution 1: Use an ‘Offline Bundle’ update
Firstly, you need a copy of the appropriate ‘offline bundle’ update, below you can see this is the customised one for HPE servers.
Upload the offline bundle into a datastore, (that the host to be upgraded has access to!) While in here, shut down the guest VMs on this host, and put the host into ‘maintenance mode‘.
NOTE: If you are updating an HPE Server, there will be a gen-9 and a pre-gen-9 update bundle! Pick the correct one!
Or, you can upload the bundle via SCP into the appropriate datastore, if you prefer.
SSH into the host you are going to upgrade. Below you can see me navigating to the Datastore;
And there’s my offline bundle ready to be installed.
Remember: Even if you’re in the correct directory, you need to specify the ‘full path’ to the ‘offline bundle‘ (or it looks in the ‘/var/log’ directory and won’t work). Execute the following command;
For a while it will look like nothing is happening, (don’t panic.) After a while a LOT of text will scroll past (quickly). Scroll back up to the TOP of all that text, and you are looking for, is ‘The update completed successfully‘.
Reboot the host.
Solution 2: Use VMware Update Manager
Warning: You CANT deploy an ESXi image, thats OLDER than the Update Manager you are running, i.e. if your vCenter is 6.5 you cant upload an ESX 6.0 image, (it will fail – this cost me two hours onsite!)
Warning 2: You need vCenter 6.0 Update1 or newer to perform this function.
I’ve got two hosts, one’s a Dell PowerEdge and the other a HP Proliant, I’ve already upgraded the HP server, you will see that in the screen shots below, now I’m going to upgrade the Dell.
Before Starting;
Download the install .ISO file that has the newer version of the ESXi software.
vMotion all the VM’s off the host being upgraded, (to save time).
If you have two hosts, (like me.) You might want to disable HA and DRS on the cluster as well temporarily!
Yes these days we would prefer to use GPO or GPP to do this, but some printers simply refuse to be farmed out this way, and a lot of clients don’t want to install their network printers in that manner.
Con2prt is a very old piece of software it’s part of the Windows NT4 ZAK (Yep it’s that old!). Its purpose in life is to connect clients to printers. So how can we do that based on location? We use a system variable, you may or may not be familiar with system variables (%username% and %userprofile% are commonly used). We will create one called Location and set it to a value e.g. accounts-office. Then when you log into a machine with this variable set to accounts-office you get all the printers in the accounts office.
It’s a great solution for schools where pupils travel all over the school/campus and always need the printer in the classroom they are in.
Solution
1. First download con2prt and put it in a shared folder on your network that has Read/Execute rights (For the rest of this example, I’ll useprintservercon2prt).
2. The easiest way to get an environment variable on the target machines is to create a Group Policy Preference to create it. Go to your domain controller, Start > Administrative tools > Group Policy management console > either create a new policy and link it to the OU containing your target COMPUTERS or edit an existing policy. Then navigate to:
[box]Computer configuration > Preferences > Windows Settings > Environment[/box]
Create a new system variable called Location, and set it to a sensible value that reflects the machines location.
3. Then either get the clients to reboot, wait a couple of hours, or manually run “gpupdate /force” on them. You can check on the client machines if the system variable was successful, by looking in the system properties > Advanced system settings > Advanced > Environment Variables > And check that Location has been created with the correct value we created above.
4. OR drop to command line and issue an “echo %Location%” command, make sure it returns the correct value.
5. Now install the printer on your print server, and share it on the network (Remember if it’s an x64 bit server, and your clients are x32 you will need to ALSO import the x32 bit drivers. (Printer Properties > Sharing > Additional Drivers).
6. Now make sure the user has a login script > In the example below I’ve set it in AD on the user object (So the login script will live in the NETLOGON share of your domain controller(s)). But you can specify login scripts with group policy, (User Configuration > Policies > Windows Settings > Scripts > Logon) should you prefer.
7. Edit/Amend the script using the example below, (Note: always start with the /F option to remove printers, or users will travel round collecting more and more printers, that will never get removed!).
8. Then when the user logs in, the printers will install in the background.
Note: If they see and error that says “Do you Trust This Printer” then you will need to do this.
Related Articles, References, Credits, or External Links
There’s nothing more annoying, you have just rebuilt your PC and you are missing some drivers. Everything appears to be working but there’s one (or more) devices in Device Manager with a yellow exclamation mark over them called ‘Unknown Device’ or ‘Base System Device”.
Solution
This solution is not a ‘Fix All’ for all situations, but it will point you in the right direction. Even if you can find out that the device is an “Intel chip called EL-XYZ” for example, some Google searching will get you the correct driver when you know what you are looking for.
1. So in device manager (Windows Key+R > devmgmt.msc{enter}). Here are two devices I don’t have drivers for, open the properties for the first one and select ‘Details’ > Change the property to ‘Hardware ID’.
2. Locate the Vendor ID (looks like VEN_{this number}) > Locate the Device ID (looks like DEV_{this number}) > Write them down.
3. Go to PCIDatabase, and search for either, (though the Device ID is your best bet).
4. Progress! Now we know it’s a JMicron Card Reader that needs a driver > There is a link to click as well.
5. Here we are lucky, it’s giving us the direct download form the vendors FTP site, you may not be as lucky, but a Google Search for “{device name} + {version of Windows} + {x64 or x32 bit} + {Driver}” should get you there.
6. I went to that FTP site, and after a bit of clicking about I downloaded the newest driver, (I scientifically picked the one with the biggest number!) And installed it.
. Device Working.
6. The second device didn’t have a handy link, but it told me it was a device made by “Validity” so I guessed it was the finger print reader on my laptop, and got the driver straight from Hewlett Packards site.
Drivers I’ve Had to Look For
I will add any odd ones that have been difficult to find below, (Note: There are literally millions of drivers, these are just the ones I’ve ever had to search for.)
PCIVEN_197B&DEV_2391&SUBSYS_1619103C&REV_3
USBVID_138A&PID_003C&REV_0086
If you want me to add any you’ve add a nightmare locating, click the contact link below and send me the details.
Related Articles, References, Credits, or External Links
Whilst trying to contact a WDS server from an ESX client machine (though this can happen on a physical machine also). You see the following error,
The network location cannot be reached, For information about network troubleshooting, se Windows Help.
Solution
This is because the WindowsPE image you are using to Capture/Deploy does not have the network drivers for the NIC in the machine you are imaging (At time of writing the VMXnet3 driver is NOT in the standard WindowsPE 3.0 image).
1. Get the drivers for the NIC, if they are the VMware VMXnet 3 drivers, you can find them on any guest machine running the VMware tools, (look in Program filesVMwareVMware ToolsDrivers), copy both the folders as indicated below.
2. If you ARE using WDS you will need to right click your boot images and export them.
3. Once you have the drivers and the images – use THIS PROCESS to inject the drivers into the image.
4. Finally in the WDS Administrative console, delete the boot Images and “Re-import” the ones you have just updated with the new drivers.
Related Articles, References, Credits, or External Links
Before Server 2008 R2 when we needed to inject drivers into our WDS images we had to do it like this.
Now however the process is a lot more elegant! Simply import the drivers into WDS, then inject them into the boot images (Yes the boot images NOT the Windows Images you are deploying!)
Solution
Add Driver Packages to Image is “Greyed out”
If while attempting to add drivers, the option to “Add Driver Packages to Image” is grayed out.
Then you may need to update your boot images from Server 2008/Vista images to 2008 R2/Windows 7 Images. (or from version 6.0.6000 to 6.1.7600).
Related Articles, References, Credits, or External Links
You don’t have a serial port on your laptop so to console into some network equipment you need a USB/Serial Adaptor, I did have some hassle getting drivers for my old Vista Laptop but thankfully I found these ones. {vista-prolific-chip-driver-for-serial-adapters 1.8Mb}
But they wouldn’t load on Windows 7.
Solution
1. Run the same drivers above, but in compatibility mode for Vista. Right Click the Installer > Properties > Compatibility > Tick “Run this program in comparability mode for” > Select Windows Vista (Service Pack 2) > Apply > OK.
2. Install as normal by running vista_installer.exe
Related Articles, References, Credits, or External Links
A while ago I wrote an article about adding drivers to a WindowsPE Image, this was part of an installing Symantec Ghost with WDS procedure. Recently one of my colleagues was using my instructions, and despite his best efforts could not get the procedure to work with a new PC (Intel NIC).
So he decided to give it a go with the new version of the WAIK he was successfull, but the procedure is slightly different. This prompted re-write number 1, Then I started messing around with Windows PE on USB, and found out a bit more, so here we are with re-write 3
Solution
The following procedure assumes the following,
Folder Locations :- c:TEMP_IMG is where the boot image will be mounted. c:drivers is where your additional network drivers will be stored. c:ghost is where you have saved a copy of GHOST32.exe (Note: Only if using Ghost).
9. All being well when completes, it will say “The operation completed successfully”.
10. If you are using Ghost, open notepad > File > Open > Change file type to “All Files” > Navigate to c:TEMP_IMGwindowssystem32startnet.cmd > Add in the line GHOST32.EXE after the initial statement. (and copy ghost32.exe to the c:TEMP_IMGwindowssystem32 directory.
11. Now unmount the image and commit the changes with the following command at the Deployment Tools Command Prompt.
[box] imagex /unmount /commit c:TEMP_IMG [/box]
12. If you are using WDS you can now import the image.
Related Articles, References, Credits, or External Links
If that is the case then you need to exempt both your user and the computer from this method of printer deployment while you are troubleshooting.
Solution
1. As we cant be sure what printer/driver is causing the problem, we need to remove them ALL > Devices and Printers > Select each one in turn, and remove (Note: Keep one for the next step, but remember to delete that also when you have completed the next step).
2. Select your last printer > Print Server properties > Drivers > Remove them ALL.
3. Launch ‘appwiz.cpl’ and ensure there is no printing software installed, if there is uninstall it.
4. Launch ‘services.msc’ > Locate the Print Spooler service and ensure it is set to log on as ‘Local System’.
Note: As shown, from here you can manually start the service, but for now we will leave it as it is.
8. Start > In the search/run box type ‘regedit’ > navigate to;
[box]
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Print > Environment > Windows NT x86
[/box]
Here there should be two sub keys called Drivers and Print Processors, if there are any more delete them.
Warning: You might want to right click and ‘Export’ the keys in case anything explodes, you can simply double click the ‘exported’ file to merge it back in.
9. If your machine is running x64 bit Windows navigate to;
[box]
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Print > Environment > Windows x64
Here there should be two sub keys called Drivers and Print Processors, if there are any more delete them.
Warning: You might want to right click and ‘Export’ the keys in case anything explodes, you can simply double click the ‘exported’ file to merge it back in.
10. Now navigate to;
[box]
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Print > Monitors
[/box]
Here delete ALL Keys Except,
AppleTalk Printing Devices (This may not be present)
BJ Language Monitor (This may not be present)
PJL Language Monitor (This may not be present)
Local Port
LPR Port (This may not be present)
Microsoft Document Imaging Writer Monitor (This may not be present)
Microsoft Shared Fax Monitor
Standard TCP/IP Port
USB Monitor
WSD Port
11. At this point, physically unplug all printers from the PC, (make sure no scripts or group policies are going to attempt to reinstall the printers). Then reboot the machine.
12. When the reboot is complete, make sure the Print Spooler service stays up without error.
13. Get the latest drivers for your printer(s) and reinstall them one by one, (I would say after each printer install, let the system run until you trust it, before installing the next printer).
Print Spooler Fails when attempting to print from Internet Explorer.
If this problem only manifests itself when printing from IE, then go to Internet options > Advanced > Reset.
12. If that does not rectify the problem, make sure you are running the latest version of Adobe flash (or for troubleshooting remove the current version).
Related Articles, References, Credits, or External Links
Originally I wrote this back for Windows 7, but I have now updated it for Windows 10. How to add an IP network printer.
Setup a Windows Printer
1. If you don’t have a CD/DVD that came with the printer, then get onto the manufacturers website and download the correct drivers for your printer, you will need to know if you require 32 or 64 bit drivers.
4. Choose “Add a local printer“. I only ever choose the network printer option if I’m connecting to a printer by name in the win7printer name format, or I’m going to browse Active Directory for a printer.
5. Select a new port > Set the type of port to “Standard TCP/IP Port” > Next.
6. Enter the IP address of the printer. Either you have set this up manually, or you have got it from a configuration page that you printed off the printer > Next.
7. Have Disk.
8. Navigate to your drivers.
9. Some drivers are for multiple printer types, select yours. Note: It’s not unusual for multiple manufacturers models to be listed here > Next.
10. Give the printer a name > Next.
11. Choose whether you want to share the printer or not > Next.
Test Your Windows Printer
12. Print a test page.
13. There’s your new printer setup and ready (the green tick denotes it’s the default printer).
Note: The Default Printer, is where your print jobs are sent if you have multiple printers installed, and you simply hit the print button in an application.
Related Articles, References, Credits, or External Links