• 0

Executing a PowerShell script from C# with Parameters


Question

Sup. I'm adapting this solution to a Windows Forms solution. So far I've been able to execute the `Get-WUList` command with no problems. But it doesn't seem to go well with the `Hide-WUUpdate`. This is what I've tried so far:

 

    public class PowerShellController : IPowerShell
    {

        //Created at a global scope so anyone can fetch it.
        InitialSessionState initial;
        RunspaceInvoke scriptInvoker;
        Runspace runspace;
        PowerShell ps;

        //The View to Control
        IView view;

        //The Helper GridViewProcessor class
        IGridViewProcessor gp;

        //Initializing the Controller - Loads the Module.
        public PowerShellController()
        {
            initial = InitialSessionState.CreateDefault();
            initial.ImportPSModule(new string[] { @"C:\Users\Jose\Documents\WindowsPowerShell\Modules\PSWindowsUpdate\PSWindowsUpdate.psd1" });
            scriptInvoker = new RunspaceInvoke();
            scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope Process");

            runspace = RunspaceFactory.CreateRunspace(initial);
            runspace.Open();

            using (ps = PowerShell.Create())
            {
                ps.Runspace = runspace;
            }

            //Console.WriteLine("Please Wait. This will take a while to load.");

        }


        public void SetView(IView view, IGridViewProcessor gp)
        {
            this.view = view;
            this.gp = gp;
        }


        public void GetAvailableUpdates()
        {

            MessageBox.Show("Ok. The program will kind of hang. This is normal." +
                            "This Means that it will start looking for updates "
                );

            IEnumerable<PSObject> WUList; //Placeholder for the PS Executed Command

            using (ps = PowerShell.Create())
            {
                //Adds the PowerShell Command
                ps.Commands.AddCommand("Get-WUList");
                //Executes the PowerShell command
                WUList = ps.Invoke();
            }
            
            //Loads the Model - Can be later on rewritten for Ninject Support.
            List<WindowsUpdate> model = new List<WindowsUpdate>();
            int id = 1;
            foreach (PSObject result in WUList)
            {
                WindowsUpdate item = new WindowsUpdate
                {
                    Id = id,
                    Name = result.Members["Title"].Value.ToString(),
                    Size = result.Members["Size"].Value.ToString(),
                    Type = UpdateType.Undefined,

                };
                model.Add(item);
                id++; //Icnrease ID count
                //Console.WriteLine("Update Name {0} --- Size: {1}", result.Members["Title"].Value.ToString(), result.Members["Size"].Value.ToString());
            }

            //Adds it to the view:
            view.AddUpdateToGrid(model);
        }

        public void HideSelectedUpdates(DataGridView grid)
        {
            //Gets SelectedUpdates to the WindowsUpdate model
            var SelectedUpdates = gp.GetSelectedUpdates(grid);
            using (ps = PowerShell.Create())
            {
                foreach (var update in SelectedUpdates)
                {
                    ps.Commands.Clear();
                    ps.Commands.AddCommand("Hide-WUUpdate").AddParameter("Title",update.Name).AddParameter("Confirm", false);
                                        
                    //ps.Commands.AddCommand("Hide-WUUpdate -Title \""+update.Name+"\"");
                   var result = ps.Invoke();
                    
                }

            }

            MessageBox.Show("Updates Have been hidden");

        }

    }


The method I can't seem to work is the `HideSelectedUpdates(DataGridView grid)`.

Script gets executed and no exceptions are thrown, but it doesn't seem to reflect any changes at all.

Any suggestions?
 

4 answers to this question

Recommended Posts

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • And this is why I always wait at least a week after a Patch Tuesday before updating the servers. No headaches over here.
    • Windows is a scam for many decades, it's good if some people are realizing it now
    • Latest Patch Tuesday has broken DHCP Server in all Windows Server editions by Usama Jawad Microsoft released Patch Tuesday updates for Windows and Windows Server releases roughly a week ago, on June 10. In the latter, the release contained new functions for Narrator scan mode, along with tons of fixes for File Explorer, GDI+, Hyper-V, and more. At that time, Microsoft noted a known issue for Noto fonts, where Chinese, Japanese, and Korean text appears blurry or unclear under certain conditions. Now, it has highlighted another known issue following user reports. For the past couple of days, users on Reddit have been reporting issues with the DHCP service after applying the latest Patch Tuesday update. Apparently, rebooting the system fixes the issue, which can be understandably annoying. Now, Microsoft has updated the documentation for the June 10 release notes across Windows Server 2016, 2019, 2022, and 2025, to mention that the DHCP Server service may "intermittently" stop working after installing Patch Tuesday's update, which will impact IP renewal processes on client machines. Redmond has assured customers that it is working on a fix, which will likely be rolled out within the next few days. Of course, this problem is rather frustrating for IT admins, and that annoyance is reflected in the Reddit thread where customers are blaming Microsoft's software quality assurance practices. The fact that it's currently unclear when a fix will be rolled out may further add to customer grievances. For those unaware, the DHCP Server service in Windows is responsible for network management such as allocation and configuration of IP addresses in a centralized environment with robust logging and monitoring mechanisms. And for those keeping track, this is not the only Windows Server issue that has cropped up in recent memory. Last month, Microsoft pushed an out-of-band (OOB) hotfix to patch a Hyper-V bug that was plaguing the platform. Of course, one can argue that problems like these are happening because of incomplete testing, but it is also important to remember that Windows is running on hundreds of millions of devices all over the globe, so comprehensive test case coverage is very difficult, if not impossible.
    • And still, no Windows Hello support for protected "tabs" in the "old"/Win32 OneNote app, a feature that was available for a long time in the UWP version. Please, Microsoft, get back to feature parity...
    • Like jupe, for me, the most exciting news from Windows for a few weeks ( / months ?) now is the return of the clock in the taskbar calendar. I filed a feedback hub post so long ago about this. Finally!
  • Recent Achievements

    • Week One Done
      patrickft456 earned a badge
      Week One Done
    • One Month Later
      patrickft456 earned a badge
      One Month Later
    • One Month Later
      Jdoe25 earned a badge
      One Month Later
    • Explorer
      Legend20 went up a rank
      Explorer
    • One Month Later
      jezzzy earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      617
    2. 2
      ATLien_0
      281
    3. 3
      +FloatingFatMan
      174
    4. 4
      Michael Scrip
      153
    5. 5
      Steven P.
      124
  • Tell a friend

    Love Neowin? Tell a friend!