Starting programs on multiple desktops using powershell in windows 10 Starting programs on multiple desktops using powershell in windows 10 powershell powershell

Starting programs on multiple desktops using powershell in windows 10


This should get you on the right lines. It uses PowerShell, C# (inside PS), Windows shortcuts and basic commands. Save this in a .ps1 script.

$Source = @"using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using WindowsInput;namespace CSharpPS{    public static class PS    {        public static void NewVD()        {            InputSimulator.SimulateKeyDown(VirtualKeyCode.LWIN);            InputSimulator.SimulateKeyDown(VirtualKeyCode.CONTROL);            InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_D);            InputSimulator.SimulateKeyUp(VirtualKeyCode.LWIN);            InputSimulator.SimulateKeyUp(VirtualKeyCode.CONTROL);        }            }}"@;Add-Type -TypeDefinition $Source -Language CSharp -ReferencedAssemblies InputSimulator.dll

You can get the C# InputSimulator.dll from https://inputsimulator.codeplex.com/

Once the type has been added you can then call [CSharpPS.PS]::NewVD() to create new virtual desktop. From here you can run specific programs.You may need to manually set a sleep also. An example :

calcStart-Sleep -Milliseconds 500

Then open a new virtual desktop [CSharpPS.PS]::NewVD()Start-Sleep -Milliseconds 500notepad

You could expand the C# class to allow changing between Virtual Desktops or minimizing applications like you required.


There are Powershell commands that work with virtual desktops.First, you will have to install virtual desktop module with Install-Module VirtualDesktop

# Switch to desktop 2 (count starts with 0)Get-Desktop 1 | Switch-Desktop    # Move obs64.exe to desktop 3(ps obs64)[0].MainWindowHandle | Move-Window (Get-Desktop 2) | Out-Null

You may have to wait for the starting process to initialize its window with Start-Sleep

Read more here: https://gallery.technet.microsoft.com/scriptcenter/Powershell-commands-to-d0e79cc5