Я провел некоторое исследование, и вам лучше завершить работу проводника, отправив сообщение.
С сообщением об этом WM_EXITEXPLORER (1460), вы можете сказать, что проводник закрыт.
Вот мой код, работающий для Windows 10:
$code = @'
[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Unicode)] public static extern IntPtr PostMessage(IntPtr hWnd, int Msg, uint wParam, string lParam);
[DllImport("user32.dll", EntryPoint = "FindWindowW", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
'@
$myAPI = Add-Type -MemberDefinition $code -Name myAPI -PassThru
$myAPI::PostMessage($myAPI::FindWindow("Shell_TrayWnd", $Null),1460,0,0)
Start-Sleep -Seconds 10
Лучше дождаться закрытия окон проводника, может быть, я добавлю это завтра. На данный момент должно хватить 10 секунд ожидания, чтобы файл explorer.exe завершился изящно.
Это полностью лучше, чем вообще использовать kill!