In my previous post I explained how to Create shortcuts to deploy available applications in ConfigMgr 2012.
User-available deployed apps are not shown in the SCCM 2012 Software Center right away as designed. (Sidenote: I believe ‘The new SCCM’ vNext (a.k.a. Current Branch) has a different approach already!)
Using ApplicationViewService.asmx on the Application Catalog we can do some extra’s: automated application requests!
This way the user does not have to go to the App-Catalog and request the app. Besides that, only not-installed apps will appear in the ‘Available Software’ tab in Software Center. Which is nice right?
Before we can use this we have to make changes to the Application Catalog web.config file.
The file can be found on the server running the appcatalog at
<drive>\:Program Files\SMS_CCM\CMApplicationCatalog\Web.config
save a copy if you want to be able to revert to original without thinking.
Find the “webServices” section in the web.config file:
Modify web.config to delete the <remove name=”Documentation”> node:
After this modification you can go to the page
http(s)://<your server>/CMApplicationCatalog/ApplicationViewService.asmx
and see the different operations you could use.
The next script you have to run on the client(s) within the security context of the user. Use a scheduled task like in my previous post if you want to trigger this for more users and multiple times.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#========================================================================== # NAME: SOAP.ps1 # AUTHOR: Ariën de Groot - ADG ICT Solutions # DATE : 30-09-2015 # COMMENT: Script will check for deployments from the app-model from # the app-catalog website and initiate install requests to the user and device. #========================================================================== # Create web service proxy $catalogurl = "http://yourcatalogserverhere.lab/CMApplicationCatalog"; $url = $catalogurl + "/ApplicationViewService.asmx?WSDL"; $service = New-WebServiceProxy $url -UseDefaultCredential; # Retrieve the first 10 applications sorted by name # Sample app-id: "ScopeId_8126A8B4-6420-4B40-B92F-466A79A8F355/Application_d64ebb1b-d8e3-4d48-b0f6-ed566dc14d31" $total = 0; $apps = $service.GetApplications("Name",$null,"Name","",10,0,$true,"PackageProgramName",$false,$null,[ref]$total) # Retrieve device id to identify the machine $clientsdk = [wmiclass]'root/ccm/clientSDK:CCM_SoftwareCatalogUtilities'; $deviceidobj = $clientsdk.GetDeviceID(); $deviceid = $deviceidobj.ClientId + "," + $deviceidobj.SignedClientId; # Submit application requests to the server If($apps) { $apps.ApplicationId | ForEach-Object { $installresult = $service.InstallApplication($_, $deviceid, $null); } } |
After running this script the installations will appear in Software Center (right away) and Installation-shortcuts will be created if you use my other PowerShell Scripts.
In short: run this script first and then the other one :).
Leave A Comment