Remote Software Center – Concept Preview

One thing always leads to another and that’s exactly how this project came to start. Last year i did a blog post on how to Invoke Software Updates remotely with Powershell and one on Applications and just last week i followed up on OSD Task sequence. Combining all of those with the mindset of trying to simplify tasks and helping people i started out to create this tool i call Remote Software Center.

 

What is Remote Software Center  ?

It’s a Windows Form GUI made in Sapiens Powershell Studio combined with Powershell scripting using WMI and CIM instructions to call different built in functions in Software Center.  The goal is to have the same and more functionalities as the Software Center application on each client but managed remotely instead so one does’t have to log on to the local computer to perform tasks you do inside in Software Center.

 

Current version is available for Download over at Technet both as .PS1 format and .EXE

https://gallery.technet.microsoft.com/Remote-software-center-044e3514

 

Watch the video below to see it in action.

 

Current version

 

This is how it looks in its current form. First you need to enter a computer name and “connect” after that the comboboxes will populate with all the available software being OSD Task Sequence, Applications and Software Updates that’s available on the client.

More features will be added in the future.

 

2

3

4

Technical information

The script runs under current user context which means that you need to have the sufficient rights to access the other computer or else it won’t work.

More info will be added.

 

Example

 

 

Would love to get some feedback and ideas on this, post your comment below or hit me up on twitter

 

Until next time, cheers Timmy !

You can find me over at

[twitter-follow screen_name=’Timmyitdotcom’]

 

28 comments

  1. hi,
    after connect i got:
    Cannot validate argument on parameter “Items”. The argument is null. Provide a valid value for the argument, and then try running the command again.

    regards

    Greg

    1. Hey, some people have been reporting this but i havent been able to reproduce it so far. Can you give me any information on what kind of system you are running the script on and what towards what system ? Like OS ?

      1. I have the same issu!

        ConfigMgr: CB1606
        ADK: 1607
        MDT: 2013 Update 1 (integrated with CM)
        Client OS: Windows 7 & Windows 10 1607

    2. Hi Gorgo,
      open the PS1-File. Replace this (its in Line 1030):

      Load-ComboBox $comboboxOSD $OSD -Append
      $comboboxOSD.SelectedIndex = 1
      Load-ComboBox $comboboxAPP $AppName -Append
      $comboboxAPP.SelectedIndex = 1
      Load-ComboBox $comboboxSUP $SUPName -Append
      $comboboxSUP.SelectedIndex = 1

      With that:

      if ($OSD)
      {
      Load-ComboBox $comboboxOSD $OSD -Append
      $comboboxOSD.SelectedIndex = 1
      }
      if ($APPName)
      {
      Load-ComboBox $comboboxAPP $AppName -Append
      $comboboxAPP.SelectedIndex = 1
      }
      if ($SUPName)
      {
      Load-ComboBox $comboboxSUP $SUPName -Append
      $comboboxSUP.SelectedIndex = 1
      }

      This fix your error

  2. Hi Timmy,
    As Hildwin mentioned, adding an “If” statement when loading the combobox will prevent the error because if the values provided are blank (ie no available applications etc), an error will be returned by the Load-ComboBox function, which has [ValidateNotNull()] on the $Items parameter.
    This should be done both in the $buttonConnect_Click event and the $textboxComputername_KeyDown event.

    1. Interesting thing is that i couldn’t reproduce it my self when having no available applications or software updates on my test machine, but if it works it works 🙂

    2. Changing this in both $buttonConnect_Click event and the $textboxComputername_KeyDown event almost dit it! Now it works for Applications and Software Updates but sadly not for OSD Task Sequence.

      No OSD TS shows up in the tool. Dosn’t matter if it’s available or installed.
      Anyone have any ideas?

  3. This almost worked
    By changing both in the $buttonConnect_Click event and the $textboxComputername_KeyDown event i got rid of the error and got Applications and Software Updates to work.

    Sudly OSD Task Sequence still doesn’t work. No OSD TS shows up in the tool even if ther are OSD TS deployed to the computer. One is installed and one available.

    Any ideas?

    1. If you try to run this powershell command locally on the client.

      Get-CimInstance -ClassName CCM_Program -Namespace “root\ccm\clientSDK” -ComputerName $Computername | Where-Object { $_.TaskSequence -like “True” }

      Do you get any results?

      1. If I run this code:

        $Computername = "MyTestComputer"
        
        # OSD Task Sequence #
        $OSDTS = (Get-CimInstance -ClassName CCM_Program -Namespace "rootccmclientSDK" -ComputerName $Computername | Where-Object { $_.TaskSequence -like "True" })
        $OSD = $OSDTS.Name
        Write-Output "OSD: $OSD"
        
        # Application #
        $Application = (Get-CimInstance -ClassName CCM_Application -Namespace "rootccmclientSDK" -ComputerName $Computername | Where-Object { $_.InstallState -like "NotInstalled" })
        $AppName = $Application.Name
        Write-Output "Apps: $AppName"
        
        # Software Updates #
        $SUPEvalState0 = "0"
        $SUPEvalState1 = "1"
        $SUPClass = [WmiClass]"rootccmclientSDK:CCM_SoftwareUpdatesManager"
        $SUPs = (Get-WmiObject -Namespace "rootccmclientSDK" -Class CCM_SoftwareUpdate -ComputerName $Computername | Where-Object { $_.EvaluationState -like "*$($SUPEvalState0)*" -or $_.EvaluationState -like "*$($SUPEvalState1)*" })
        $SUPName = $SUPs.Name
        Write-Output "Updates: $SUPName"

        I get output for Apps and Updates but nothing for TS.

      2. I mean that I get output for Apps & Updates but not TS when running against remote computer. When I run the same code localy on the same computer, then I get output for TS as well.

        Strange that it works remotly for Apps & Updates but not TS and that i Localy works for all.

      3. That is strange yes, have you tried in different environments or only in a test environment ?

      4. I have 1 environment only and it’s in production. Am I the only one that have this issue with OSD TS/that I can’t connect to CCM_Program on remote computer?

      5. Yes you are the only one who has reported this specific problem so far. I havent been able to reproduce the problem either in my test environment.

  4. What powershell version do you have on your clients and you are connecting to and clients/servers you are running the tool from?

    Do you run the tool from ISE? What version of Configuration manager, client OS, server OS and so on have you tested on?

    1. Next thing would be to compare your current environment to another one to find out whats different. Since we are not able to reproduce the problem you have and no other have reported something similar.

  5. My Primery site server runs on Server 2012:
    ConfigMgr: CB 1606
    ADK: 1607
    MDT: 2013 Update 1 (Integrated with CM)
    Powershell version: 3.0

    Tested clients:
    Windows 10 (1607)
    Powershell version: 5.1.14.393.576

    Windows 7
    Powershell version: 2.0 and version 5.0

    Tested running script from:
    CM Primery site server
    Server 2012
    Powershell: 3.0

    Server 2008 R2
    Powershell: 3.0 & Powershell 5.0.10586.117

    Have also asked around on TechNet but no success:
    https://social.technet.microsoft.com/Forums/en-US/97e65f89-b637-4e60-b1c7-c89b1144762a/cant-connect-to-rootccmclientsdkccmprogram-on-remote-computers-with-powershell?forum=ConfigMgrCBGeneral

  6. Hi Timmy, Can this be done with a batch of… oh let’s say… 100-1000 computers instead of individuals systems?

    1. Hello Jorge, Yes its possible to make that happen for sure, the GUI it self was made with a single computer in mind. Is there a specific task you want to have to done for a large collection of computers? Not sure how powershell savy you are but if you take a look at my other post here https://timmyit.com/2017/01/09/invoke-osd-task-sequence-remotely-with-powershell/ you will find the powershell functions. Let me know what you need help with Ill do my best to help out.

Leave a Reply