ウインドウのスナップ機能はwindowsキー+矢印でも実行できます。このキーを押す操作をスクリプトから行えばいいと思います。
一般的にキー操作を送るにはsendwaitを使うのが簡単ですが、sendwaitではWindowsキーを押しながら何かのキーを押すという動作は行えないため今回の問題を解決するには使えません。
おそらくc#でwindows apiを使ってキー送信を行うコードを書いて、それをpowershellから実行させるという方法で実現できると思います。
例えば、以下コードでWin+左矢印キーを送信できます。
powershell
1# powershellで特殊なキー送信ー
2
3# C#のキー送信クラス
4Add-Type -Language CSharp -ReferencedAssemblies System.Windows.Forms,System.Drawing -TypeDefinition @'
5 public class SendKeysEx
6 {
7 private const byte VK_LWIN = 0x5B; // Win Key
8 private const byte VK_LEFT = 0x25; // Left Arrow
9
10 [System.Runtime.InteropServices.DllImport("user32.dll")]
11 private static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, System.IntPtr dwExtraInfo);
12
13 public static void Send()
14 {
15 // 仮想キーコード
16 // http://kts.sakaiweb.com/virtualkeycodes.html
17 // https://docs.microsoft.com/ja-jp/windows/win32/inputdev/virtual-key-codes?redirectedfrom=MSDN
18 keybd_event(VK_LWIN, 0, 0, (System.IntPtr)0);
19 keybd_event(VK_LEFT, 0, 0, (System.IntPtr)0);
20 System.Threading.Thread.Sleep(50);
21 keybd_event(VK_LEFT, 0, 2/*KEYEVENTF_KEYUP*/, (System.IntPtr)0);
22 keybd_event(VK_LWIN, 0, 2/*KEYEVENTF_KEYUP*/, (System.IntPtr)0);
23 }
24 }
25'@
26
27# キー送信
28sleep 3 # 3秒後に送信
29[SendKeysEx]::Send()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/22 11:39
2021/02/23 03:56
2021/03/27 02:34
2021/03/27 09:53