MSEndpointMgr

ConfigMgr WebService – Version 1.3.0 released

We’re proud to announce the release of ConfigMgr WebService version 1.3.0.

What’s new

In this new version, new methods for Configuration Manager and Active Directory are included. In addition, this version now also includes an wizard-driven installer. Read the installation guide for more information regarding this installation option.

See the list below for new methods available within this release including general improvements:

General improvements

  • Addded Description property to GetCMPackage
  • Updated Connect (SMS Provider) method with better event logging
  • Added event logging for start and end of all web methods including client IP address

Configuration Manager

  • AddCMComputerAssociationForUser
  • GetCMCollectionsForDeviceByUUID
  • GetCMOSImageVersionForTaskSequence
  • RemoveCMComputerAssociation
  • RemoveCMDeviceFromCollection
  • RemoveCMLastPXEAdvertisementForDevice
  • RemoveCMLastPXEAdvertisementForCollection

Active Directory

  • GetADSiteNameByIPAddress

Download ConfigMgr WebService

In order to get your hands on the bits for this web service, you have some options. You can download the source code from my GitHub page, and compile the web service yourself. For installation instructions, follow what’s outlined in the README.md file in the repository. You can visit my GitHub page from the link below:

https://github.com/NickolajA/ConfigMgrWebService

Your other option is to download a compiled version of the web service, ready for use. This version has been made available on TechNet Gallery:

https://gallery.technet.microsoft.com/ConfigMgr-WebService-100-572825b2

We’ve published the source code for the purpose of making it available for those organisations that cannot leverage untrusted publishers, but also if you’d want to get your hands dirty and have a look at it.

Update instructions

If you already have ConfigMgr WebService installed in your environment, you can update it simply by replacing the ConfigMgrWebService.dll file in the bin folder of where you’ve placed the web service files. Please not though, that since version 1.1.0, 3 new Application Settings was introduced that you need to add manually, or replace the web.config file with the existing one and re-enter the values for each application setting.

Installation instructions

Please refer to the ConfigMgr WebService 1.3.0 – Installation Guide PDF attached in the package available on TechNet Gallery (see link above).

Documentation

Also attached in the package is the documentation for each method currently available in the latest version of ConfigMgr WebService. Please refer to ConfigMgr WebService 1.3.0 – Documentation PDF for more information.

(3818)

Nickolaj Andersen

Chief Technical Architect and Enterprise Mobility MVP since 2016. Nickolaj has been in the IT industry for the past 10 years specializing in Enterprise Mobility and Security, Windows devices and deployments including automation. Awarded as PowerShell Hero in 2015 by the community for his script and tools contributions. Creator of ConfigMgr Prerequisites Tool, ConfigMgr OSD FrontEnd, ConfigMgr WebService to name a few. Frequent speaker at conferences such as Microsoft Ignite, NIC Conference and IT/Dev Connections including nordic user groups.

16 comments

  • Would you consider extending this to include similar functions to Maik Kosters Deployment Web Service – namely those under ADex.asmx (which is multi-domain capable), and specifically : GetOUs, GetComputerAttribute, DoesComputerExist, MoveComputerToOU (think this may be covered), DoesUserExist

  • Having a heap of trouble trying to install the web service.
    Server 2016, SQL 2014.

    Installation goes fine, no errors. Attempt to browse to the URL and get 503 service unavailable. Check Application Pool and the configmgrwebservice application pool is stopped, start it, browse to web service, get 503, notice application pool is stopped. Upon checking the event viewer I see a series of errors:

    The description for Event ID 5009 from source Microsoft-Windows-WAS cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

    If the event originated on another computer, the display information had to be saved with the event.

    The following information was included with the event:

    ConfigMgrWebService
    8052
    c0000135
    —————————————————————————–
    same error with
    ConfigMgrWebService
    6496
    c0000135
    —————————————————————————–
    ConfigMgrWebService
    7016
    c0000135
    ——————————————————————————
    ConfigMgrWebService
    4456
    c0000135
    ——————————————————————————
    ConfigMgrWebService
    5516
    c0000135
    ——————————————————————————
    The description for Event ID 5002 from source Microsoft-Windows-WAS cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

    If the event originated on another computer, the display information had to be saved with the event.

    The following information was included with the event:

    ConfigMgrWebService

    If anyone could help me out with any information it would be much appreciated.

  • Great! this is really the future (and present) of OSD.
    I tested this version and i am blocked on an issue with the logging part i think. Version 1.2.1 works flawlessly. When i test the 1.3.0 i receive an error (in french) : System.Security.SecurityException: La source est introuvable mais certains ou l'ensemble des journaux des événements n'ont pas pu faire l'objet d'une recherche. Journaux inaccessibles : Security.
    à System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate)
    à System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate)
    à System.Diagnostics.EventLog.SourceExists(String source)
    à ConfigMgrWebService.ConfigMgrWebService.WriteEventLog(String logEntry, EventLogEntryType entryType)
    à ConfigMgrWebService.ConfigMgrWebService.GetCMDeviceCollections(String secret, String filter)

    My service account is not member of local admin. Thanks

    • I am getting same errors so i went back to 1.2.1.
      Also get this error when trying to test the webservice with powershell.
      Exception calling “GetCMPackage” with “2” argument(s): “Server was unable to process request. —> The source was not found, but s
      ome or all event logs could not be searched. Inaccessible logs: Security.”
      At line:1 char:1
      + $web.GetCMPackage(“xxxx”,”drivers”)
      + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
      + FullyQualifiedErrorId : SoapException

      • Hi Morten,

        Try giving your service account for the web service (specified as the identity for the application pool) local admin rights, invoke one of the methods and see if you still get the same issue. If it works you can remove the local admin rights afterwards. I’ll try to fix this with the installer when I’ve got some time on my hands 🙂

        Regards,
        Nickolaj

      • Hi Nikolaj.

        It works when i set the account as local admin.

        /Morten

      • Dont know if its because the webservice just needs to set something 1 time but i removed the local admin rights and booted the server (was doing some patches anyways)
        And it still works.

        So now i am running webservice 1.3 and the account only has the normal access as before.

      • That’s unfortunately the current behavior for 1.3.0. In the upcoming version I’ll include this step in the installer, so that it pre-creates the event log.

        Regards,
        Nickolaj

      • Good thing I read through the comments. I stumbled upon the same problem. Giving local admin rights for the first run fixed the issue.

  • Is it possible to get all AD-Group membership of a Client. So it would possible to delete all AD-Group memberships with “RemoveADComputerFromGroup”!?

  • It looks like the function GetCMPrimaryDeviceByUser filters by the wrong parameter. The query is identical to the one used in GetCMPrimaryUserByDevice and yelds the same result.

    Solution: Change the query from “WHERE ResourceName” to “WHERE UniqueUserName”?

  • Hi Nickolaj!

    Great work! Something I noticed is that “RemoveADComputerFromGroup” do not work if there is more than 1500 members of the Group. If member Count drop below 1500, it returns true and the computer is removed from the group.

  • Hi Nickolaj,

    Thank you very much for this! I noticed that several of the methods I’ve tried to use involving users return nothing or time out. For example, OSD FrontEnd 1.1.2 crashes in a boot image when I enter a username, click apply and it searches for a unique user name for several seconds. Additionally, GetCMPrimaryUserByDevice returns the correct value, but GetCMPrimaryDeviceByUser times out.

    I’ve tried making the application pool identity a full administrator in ConfigMgr and encounter the same issue, so I don’t think the account is limited in terms of permissions.

    Do you have any suggestions as to how I could troubleshoot this?

    Thank you,

    Jordan

Sponsors