Managing Services and Hardware in Server Core

As people start using Server Core, I have been finding that over time their questions tend to shift from how to perform a task remotely in the GUI to how perform the task from the command line. The impression I get is that there are two underlying reasons for this, 1 – they are getting more comfortable with the command line, and 2 – they want to create scripts for some of their more common tasks to make it easier to manage from the command line. Of course, I could be complete wrong here, so I’d be happy to hear any comments from those using the local or TS command line more.


Now that my random thought for the week is out of the way, I’ll talk about how to actually do something.


SC.exe is a very powerful command line tool that has been around for awhile but doesn’t seem to be widely known about. When managing services from the command line, net start and net stop are widely used, however SC provides a lot more functionality. SC is in fact a command line equivalent plus more functionality then the Services MMC. Some of the terminology is a little different between the two, for example in the Services MMC you pause and resume services while with SC you pause and continue services.


To perform the equivalent the Properties dialog box in the Services MMC, take a look at the options available with “SC config”. You can use SC sdhow and sdset to view and set the permissions for a service.


SC can also be used to find out what hardware you have drivers installed for on your Server Core box by running:

            Sc query type= driver

You can then look through the list and find your network card drivers, video drivers, etc. For example on my Server Core box I have the following for network and video:



DISPLAY_NAME: Intel(R) PRO/1000 NDIS 6 Adapter Driver

        TYPE               : 1  KERNEL_DRIVER 

        STATE              : 4  RUNNING

                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)

        WIN32_EXIT_CODE    : 0  (0x0)

        SERVICE_EXIT_CODE  : 0  (0x0)

        CHECKPOINT         : 0x0

        WAIT_HINT          : 0x0




        TYPE               : 1  KERNEL_DRIVER

        STATE              : 4  RUNNING

                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)

        WIN32_EXIT_CODE    : 0  (0x0)

        SERVICE_EXIT_CODE  : 0  (0x0)

        CHECKPOINT         : 0x0

        WAIT_HINT          : 0x0


If I then want to know what the driver file is for my nic so I can check the version, I can run:

D:\Windows\System32\drivers>sc qc e1g60

[SC] QueryServiceConfig SUCCESS



        TYPE               : 1  KERNEL_DRIVER

        START_TYPE         : 3   DEMAND_START

        ERROR_CONTROL      : 1   NORMAL

        BINARY_PATH_NAME   : system32\DRIVERS\E1G60I32.sys


        TAG                : 13

        DISPLAY_NAME       : Intel(R) PRO/1000 NDIS 6 Adapter Driver

        DEPENDENCIES       :



SC treats drivers like services, so if I have multiple NICs and am troubleshooting a network issue and want to disable a NIC, I can use SC to do that. Using the NIC in my box as an example, I can run: sc stop e1g60. Or, I could use SC to set the startup type to disabled and restart the box.



Comments (3)

  1. Bowulf says:

    My question is how to get new device drivers installed.  I tried the listed "driverquery" found under help, but that command did not work.  I tried to find some documents on installing new services or devices but so far had no luck.  Have any suggestions?

  2. You need to copy the drivers to the Server Core box and then run:

    drvload <path><driver.inf>

    This will add the driver to the repository and kick off a PnP scan for new hardware, installing the driver.

  3. Elizabeth says:

    How do you check for missing drivers?  Do you have to use powershell or is there a way to do it with the sc command?

    I need a way to check to see if my 2012 core server's drivers are all installed or not

Skip to main content