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.

Nickolaj Andersen
Principal Consultant 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. Currently working for TrueSec as a Principal Consultant. 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 and user groups.

(2305)

comments
  • Jordan
    Posted at 04:31 June 2, 2017
    Jordan
    Reply
    Author

    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

  • Mikael S
    Posted at 08:33 June 5, 2017
    Mikael S
    Reply
    Author

    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.

    • Nickolaj Andersen
      Posted at 16:32 June 5, 2017
      Nickolaj Andersen
      Reply
      Author

      Hi Mikael, thanks for reporting this. Will look into this, is probably the default limit when searching. Regards, Nickolaj

  • David
    Posted at 09:42 June 12, 2017
    David
    Reply
    Author

    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”?

  • Stefan Schuh
    Posted at 13:15 June 27, 2017
    Stefan Schuh
    Reply
    Author

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

  • Josua Baril-Aumond
    Posted at 19:02 June 28, 2017
    Josua Baril-Aumond
    Reply
    Author

    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

    • Morten
      Posted at 09:09 July 4, 2017
      Morten
      Reply
      Author

      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

      • Nickolaj Andersen
        Posted at 22:21 July 4, 2017
        Nickolaj Andersen
        Reply
        Author

        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

        • Morten
          Posted at 08:43 July 5, 2017
          Morten
          Reply
          Author

          Hi Nikolaj.

          It works when i set the account as local admin.

          /Morten

          • Nickolaj Andersen
            Posted at 08:44 July 5, 2017
            Nickolaj Andersen
            Author

            Awesome!

            Regards,
            Nickolaj

          • Morten
            Posted at 08:49 July 5, 2017
            Morten
            Author

            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.

          • Nickolaj Andersen
            Posted at 13:30 July 5, 2017
            Nickolaj Andersen
            Author

            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

          • Marcel
            Posted at 20:11 July 5, 2017
            Marcel
            Author

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

  • Josua Baril-Aumond
    Posted at 23:13 July 5, 2017
    Josua Baril-Aumond
    Reply
    Author

    Thanks i Will try that!

  • Nathan Swanson
    Posted at 19:43 August 10, 2017
    Nathan Swanson
    Reply
    Author

    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.

  • Chris
    Posted at 22:35 August 13, 2017
    Chris
    Reply
    Author

    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

  • Leave a Reply