レビュー

Windows 10/11の仮想デスクトップをコマンドラインで自由自在に「PSVirtualDesktop」

「Insider Preview」を含む最新OSで動作。仮想デスクトップ操作の自動化が捗る

Windows 11の「仮想デスクトップ」機能。デスクトップごとに異なる壁紙を設定できる

 Windows 10/11に搭載されている「仮想デスクトップ」機能は、複数のデスクトップを作成し、切り替えられるようにする機能。プライベートと仕事でデスクトップを使い分けたり、ビデオ会議で共有するためのキレイなデスクトップを用意したいといった場合に役立つ。また、Windows 11ではデスクトップごとに異なる壁紙を設定できるので、壁紙で仮想デスクトップを区別したり、気分に合わせて複数の作業環境を構築するといったことも可能だ。

 仮想デスクトップは、タスクバーや[Windows]+[Tab]キーからアクセスできる「タスク ビュー」で一覧・作成・削除・切り替えが可能で、新たな仮想デスクトップを作成する[Windows]+[D]キーや、仮想デスクトップを切り替える[Windows]+[Ctrl]+左右キーといったキーボードショートカットも用意されている。

 しかし、仮想デスクトップをコマンドラインで操作するOS標準の方法は用意されていない。以前は「VDesk」というツールがあったが、最近は更新されておらず、最近のバージョンのOSでは動作しないようだ。

 現在もメンテナンスされているツールとしては「VirtualDesktop」があるが、これは自分でソースコードをコンパイルする必要があるので、若干ハードルが高いだろう。そこで今回は、「VirtualDesktop」の「PowerShell」スクリプト版である「PSVirtualDesktop」を紹介しよう。「VirtualDesktop」も「PSVirtualDesktop」も「GitHub」でホストされているオープンソースプロジェクトで、ライセンスは「MIT license」。作者も同じだ。

「PSVirtualDesktop」のインストール

 「PSVirtualDesktop」は、Windows 10/11の仮想デスクトップを管理するコマンドレットを提供する「Powershell」モジュールだ。仮想デスクトップの作成、削除、移動、切り替えなどが行える。

モジュールをインストール

 モジュールをインストールするには、「PowerShell」で以下のコマンドを実行すればよい。

Install-Module -Name VirtualDesktop

 ただし、このコマンドには管理者権限が必要。「Windows Terminal」の場合、[Ctrl]キーを押しながら「PowerShell」プロファイルを起動すれば、盾アイコン付きの管理者権限版ウィンドウが立ち上がる。

利用できるコマンドレット

「PSVirtualDesktop」のコマンドレット

 「PSVirtualDesktop」で利用できる主なコマンドレットは、以下の通り。コマンドレットの利用に管理者権限は不要だ。

  • New-Desktop:仮想デスクトップの作成
  • Switch-Desktop:指定した仮想デスクトップへ切り替え。オブジェクトまたはインデックス(0から仮想デスクトップの数-1)を指定する
  • Remove-Desktop:指定した仮想デスクトップを削除する
  • Get-DesktopCount:仮想デスクトップの数を返す
  • Get-DesktopList:仮想デスクトップの一覧を返す。デスクトップで使われている壁紙も取得可能
  • Get-CurrentDesktop:現在利用中の仮想デスクトップオブジェクトを取得
  • Get-Desktop:現在利用中の仮想デスクトップのインデックス(-Index)などを取得。「Get-Left~」「Get-Right~」で左右のデスクトップを取得することも可能
  • Get-DesktopIndex:現在利用中の仮想デスクトップのインデックスを取得
  • Move-Window:指定した仮想デスクトップへウィンドウを移動。「Move-Active~」でアクティブウィンドウの移動も可能
  • Pin-Window:ウィンドウをピン留め。「Unpin-~」で解除
  • Pin-Application:アプリケーションをピン留め。「Unpin-~」で解除

 加えて、以下のコマンドレットが「Windows 10 バージョン 2004」以降で利用可能。

  • Get-DesktopName:現在利用中の仮想デスクトップの名前を取得。「Set-」で名前を設定

 以下のコマンドレットは、「Windows 11」以降でのみ利用できる。

  • Move-Desktop:現在のデスクトップを他のデスクトップへ移動
  • Remove-AllDesktops:表示されているデスクトップ以外のすべてを削除
  • Set-DesktopWallpaper:指定したデスクトップに壁紙を設定
  • Set-AllDesktopWallpapers:すべてのデスクトップに壁紙を設定

 たとえば、現在実行中の「Windows Terminal」をすべての仮想デスクトップに表示(ピン留め)するには、以下のコマンドレットを実行すればよい。

Pin-Window ((Get-Process "windowsterminal")[0].MainWindowHandle)
現在実行中の「Windows Terminal」をすべての仮想デスクトップに表示(ピン留め)

 この状態で「Switch-Desktop 1」などのコマンドレットを実行すれば、仮想デスクトップの切り替えが行える。スクリプトによる環境構築や、他のコマンドラインツールと連携した作業の自動化などに役立てたい。

「Switch-Desktop 1」などのコマンドレットを実行すれば、仮想デスクトップの切り替えが行える

ソフトウェア情報

「VirtualDesktop」
【著作権者】
MScholtes 氏
【対応OS】
Windows 10/11
【ソフト種別】
フリーソフト
【バージョン】
1.11(22/11/13)
「PSVirtualDesktop」
【著作権者】
MScholtes 氏
【対応OS】
Windows 10/11およびServer 2022
【ソフト種別】
フリーソフト
【バージョン】
1.5.2(23/02/19)