Power Autoamte Desktopを導入

遅ればせながらPower Automate Desktop(以下PAD)を導入。

以前はPowershell + UIAutomation.dllでデスクトップアプリケーションの自動化を行っていた。同じ処理をPADで再実装してみたが、実装にかかる作業時間が1/5程度になっている感じでありがたい。Powershell + UIAutomation.dllで記述したときには画面が表示されるのを待つためのループ処理やディレイ処理が多く遅かったのだが、PADで記述したことでディレイ処理は1箇所のみに減り、大幅に早くなっている。

ただしいくつか気になる点もある。

1.複数のMicrosoftアカウントをWindowsに関連付けていると動作しない。実行時例外が発生して「The cache contains multiple tokens satisfying the requirements. Try to clear token cache.」となってしまう。あまり使わない方のMicrosoftアカウントの連携を解除して解決した。

2.圧縮→ZIPファイルが日本語ファイル名に対応しておらず、文字化けしてしまう。OSSのUnZip(http://infozip.sourceforge.net/UnZip.html)を子プロセスとして呼ぶことで対応した。

3.コードの見にくさ。WEB上のMicrosoft Flowも何度か使ってみた事はあるのだが、一画面に20ステップ程度しか表示出来ないので、やはり複雑な処理は書きにくい。

4.バグを見つけたのでレポートしたいが、お手軽なバグレポートツールが見当たらない。ヘルプ辺りにレポートメニューがあると有り難いのだが。

総じてデスクトップアプリの自動化を行うツールとして、無償でここまで扱いやすいツールは他に無く、とてもよいと思う。だがWEBアプリ操作やファイル処理を行おうとすると、なかなか厳しい。その辺りは適材適所、SeleniumやVBAを併用する事は続きそうだ。

Active Directory環境でDHCPを使用する。

Active Directory環境でDHCPを使用する場合には、DHCPサーバとADサーバとの間で信頼関係を結び、ADサーバ上のDNSに登録されているクライアントPCのIPアドレスを更新する必要があります。

ADサーバーとの間で認証する都合上、必然的に使用できるDHCPサーバーは限られます。LinuxとSMBを使っても出来るはずですが、実際に構築したという情報も少なく面倒そうです。

DHCP自体は負荷の高いサービスでは無いので、ADサーバーとDHCPサーバーを兼ねるのが良さそうです。各ネットワークセグメントにDHCP Relayサーバーを配置して、中央のADサーバにDHCPの問合せを送ります。

参考:More about authorizing DHCP servers in AD DS

Server 2003/2008からP2Vで仮想化したときにブルースクリーン(0x0000007B)が発生する。

Windows Server 2003やWindows Server 2008の環境でP2Vツールを使用して物理サーバーから仮想環境(Hyper-V等)に移行した場合に、OSの起動時にブルスクリーンが発生して0x0000007Bのエラーが発生する場合がある。これは元の物理サーバーの環境でRAIDやSCSIを使用していたために、標準のSATA関係のドライバが組み込まれていないことに原因があります。

C:\Windows\System32\に以下のドライバが無い場合には、正常な環境から複製してください。

C:\windows\system32\drivers\intelide.sys
C:\windows\system32\drivers\pciide.sys
C:\windows\system32\drivers\atapi.sys

ドライバを読み込ませるために、以下のレジストリエントリが無い場合には作成してください。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7110&cc_0601
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\primary_ide_channel
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\secondary_ide_channel
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IntelIde
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\PCIIde
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\atapi

設定すべき値は以下を参照してください。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111]
"Service"="intelide"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7110&cc_0601]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Service"="isapnp"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\primary_ide_channel]
"Service"="atapi"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\secondary_ide_channel]
"Service"="atapi"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6e,00,74,00,65,00,6c,00,69,\
  00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6e,00,74,00,65,00,6c,00,69,\
  00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\atapi]
"ErrorControl"=dword:00000001
"Group"="SCSI miniport"
"Start"=dword:00000000
"Tag"=dword:00000019
"Type"=dword:00000001
"DisplayName"="標準 IDE/ESDI ハード ディスク コントローラ"
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  52,00,49,00,56,00,45,00,52,00,53,00,5c,00,61,00,74,00,61,00,70,00,69,00,2e,\
  00,73,00,79,00,73,00,00,00

P2Vで仮想化する前の元の環境で設定を変更できれば良いのですが、それが出来ない場合には仮想ディスクファイル(*.VHD)をマウントして編集します。レジストリを編集するにはレジストリエディタを起動し”ファイル→ハイプの読み込み”から、マウントした仮想ディスクの”\windows\system32\config\system”を開きます。

参考:P2V Migration Issues with Hyper-V: STOP: 0x0000007B

「対象のパスが長すぎます」のエラーが出てファイルを操作できないとき。

「対象のパスが長すぎます」のエラーが出てエクスプーラー上からファイルを削除する事が出来なくなったとき、コマンドプロンプトからファイル名の先頭に\\?\を付けてDELコマンドで削除すると良い。

DEL \\.\C:\Users\hogehoge\Desktop\abc長いファイル名xyz.txt

Windowsは本来なら32768文字までのファイル名を扱うことが出来る。しかし古いアプリケーションとの互換性を維持するために、普段使用できるファイル名は260文字までに制限している。先頭の\\.\は互換性のための制限を解除する指示に当たる。

C:\Windows\Tempにイベントログファイルが作成される。

C:\Windows\Tempにイベントログファイルが作成され、C:ドライブの空き容量が無くなる。

設定→システム→記憶域で見ると一時ファイルが多くの容量を使用しているが、一時ファイルの内容を確認してみると明細の合計が、一時ファイルで使用している容量よりもはるかに小さい。また一時ファイルの削除を行ってもC:ドライブの空き容量が回復しない。

実際に何処のフォルダにファイルが作成されて居るのか確認したところ、C:\Windows\Tempフォルダに大量のファイルが作成されて居ることを確認できた。どうやらC:\Windows\Temp以下のフォルダは自動では削除されないらしい。

本来ならイベントログファイルはC:\Windows\System32\winevt\Logsに作成される。検索してみたところ”Low Disk Space error due to a full Temp folder“が見つかった。どうもWindows UpdateやMicrosoft Storeの障害にともなう不具合のようである。上記の手順でトラブルシュート後にWindows Updateを適用する事で解決した。

C:\Windows\Tempにイベントログファイルが作成される。

C:\Windows\Tempにイベントログファイルが作成され、C:ドライブの空き容量が無くなる。

設定→システム→記憶域で見ると一時ファイルが多くの容量を使用しているが、一時ファイルの内容を確認してみると明細の合計が、一時ファイルで使用している容量よりもはるかに小さい。また一時ファイルの削除を行ってもC:ドライブの空き容量が回復しない。

実際に何処のフォルダにファイルが作成されて居るのか確認したところ、C:\Windows\Tempフォルダに大量のファイルが作成されて居ることを確認できた。どうやらC:\Windows\Temp以下のフォルダは自動では削除されないらしい。

本来ならイベントログファイルはC:\Windows\System32\winevt\Logsに作成される。検索してみたところ”Low Disk Space error due to a full Temp folder“が見つかった。どうもWindows UpdateやMicrosoft Storeの障害にともなう不具合のようである。上記の手順でトラブルシュート後にWindows Updateを適用する事で解決した。

Access Runtimeをインストールしようとしたら32bit版も64bit版もエラーになる

Access Runtime 2016 64bit版のインストールを行おうとすると「次の32ビットバージョンのOfficeプログラムががインストールされているため、64ビットバージョンのOfficeはインストールできません:Office 16 Click-to-Run Extensibility Component」とのエラーになる。

この環境は32bit版だったかと思い直し、 Access 2016 Runtime 32bit版のインストールを行おうとすると 「次の64ビットバージョンのOfficeプログラムががインストールされているため、32ビットバージョンのOfficeはインストールできません:Office 16 Click-to-Run Extensibility Component」とのエラーになる。

・・・どうしろとorz

Access Runtimeインストールの基本制約

Office 2016(2019にも)にはClick-to-Runインストール版 (以下C2R版) とMSIインストール版(以下MSI版)がある。ライセンス上はどちらをインストールしても構わないが、それぞれインストール方法が異なる。プレインストールの場合、昔はMSI版が多かったが、最近は C2R版が入って居ることが多い。そしてC2R版とMSI版には、それぞれ32bit版と64bit版がある。

Access RuntimeにもC2R 版とMSI版がある。C2R版はOffice 365 Access Runtimeと言う名称で、MSI版はAccess 2016 Runtime (ないし2019)と言う名称で提供されており、それぞれ32bit版と64bit版がある。

Access RuntimeをインストールするにはC2R版かMSI版か、32bit版か64bit版かの区分が完全に一致している必要がある。さらにMSI版の場合には2013と2016、2019は混在できないのでバージョンを統一する必要がある。

過去にプレインストール版が入っていた

当該環境はプレインストール版(C2R版)でインストールされていたため、アンインストールしてMSI版を入れ直していた。だが、どうもC2R版の残骸が残ってしまっているのが原因のようである。

アンインストールが完全に行われていないためにトラブルが発生することが度々あるようで、Microsoftのホームページに完全にアンインストールするための方法が書かれている。

PC から Office をアンインストールするの「オプション 2 – アンインストール サポート ツールを使用して Office を完全にアンインストールする」に従って、アンインストール補助用の実行プログラムをダウンロードして、実行することで残骸も含めて消せるようである。無論現在インストールされているMSI版も含めてアンインストールされてしまうのであろうけど・・・

余り褒められた話しではないが、作業時間も押してきているので、Access Runtime 2010のインストールでお茶を濁してしまった。でも恐らくは上記手順でOffice 2016の残骸を削除すればインストール出来るものと思われる。

Windows7でWindowsUpdateの再起動中に15%程度でとまってしまう

Windows 7 Professional (x64)の環境において、Windows Updateで繰り返しエラーが発生。OSの再起動中に毎回15%程度のところでエラーが発生して、巻き戻されてしまいます。久しぶりにC:\Windows\Logs\CBS\CBS.LOGの出番です。

2019-01-22 10:17:51, Info                  CBS    Waiting for poqexec.exe to complete...
2019-01-22 10:17:56, Info                  CBS    Waiting for poqexec.exe to complete...
2019-01-22 10:18:01, Info                  CBS    Waiting for poqexec.exe to complete...
2019-01-22 10:18:10, Info                  CBS    SQM: Reporting poqexec status with status: 0xc0000043, failed file: conhost.exe, interfering process: tmbmsrv.exe,conhost.exe,conhost.exe, context: Startup, first merged sequence: 1613
2019-01-22 10:18:10, Info                  CBS    SQM: Upload requested for report: PoqexecStatus, session id: 142861, sample type: Standard
2019-01-22 10:18:10, Info                  CBS    SQM: Ignoring upload request because the sample type is not enabled: Standard
2019-01-22 10:18:10, Info                  CBS    Failure in poqexec.exe while processing updates. [HRESULT = 0x80070020 - ERROR_SHARING_VIOLATION]
2019-01-22 10:18:12, Info                  CBS    Set the CCP impactful-commit disabling value
2019-01-22 10:18:12, Error                 CBS    Startup: Failed while processing critical primitive operations queue. [HRESULT = 0x80070020 - ERROR_SHARING_VIOLATION]
2019-01-22 10:18:12, Info                  CBS    Setting ExecuteState key to: CbsExecuteStateResolvePending | CbsExecuteStateFlagRollback
2019-01-22 10:18:12, Info                  CBS    Progress: UI message updated. Operation type: Update. Stage: 1 out of 1. Rollback.
2019-01-22 10:18:12, Info                  CBS    Startup: Processing advanced operation queue, startupPhase: 0
2019-01-22 10:18:12, Info                  CSI    00000006 IAdvancedInstallerAwareStore_ResolvePendingTransactions (call 1) (flags = 0000000a, progress = NULL, phase = 0, pdwDisposition = @0x1e0f9e0
2019-01-22 10:18:12, Info                  CBS    Startup: Changing logon timeout to a static timeout: 10800000
2019-01-22 10:18:13, Error                 CSI    00000007 (F) Error: ResolvePendingTransactions called after poqexec failure (call 1)
  Status = STATUS_SHARING_VIOLATION, Operation = DeleteFile, DiagString = [l:70{35}]"\??\C:\windows\System32\conhost.exe"
[gle=0x80004005]
2019-01-22 10:18:59, Error                 CBS    Startup: Primitive operations failed, startupPhase: 0.  The transaction will be cancelled. [HRESULT = 0x80004005 - E_FAIL]
2019-01-22 10:18:59, Info                  CBS    Setting ExecuteState key to: CbsExecuteStateInitiateRollback | CbsExecuteStateFlagPrimitivesFailed
2019-01-22 10:18:59, Info                  CSI    00000008 Creating NT transaction (seq 1), objectname [6]"(null)"
2019-01-22 10:18:59, Info                  CSI    00000009 Created NT transaction (seq 1) result 0x00000000, handle @0x12c
2019-01-22 10:19:05, Info                  CSI    0000000a@2019/1/22:01:19:05.296 CSI perf trace:
CSIPERF:TXCOMMIT;2808573

Errorが発生している箇所を見ると、conhost.exeのところでERROR_SHARING_VIOLATION(0x80070020)が発生しているようです。
ERROR_SHARING_VIOLATION はほかのプロセスとの排他処理によってエラーが発生していることを示しています。

注目するのはErrorの少し手前の行。”SQM: Reporting poqexec status with status: 0xc0000043, failed file: conhost.exe, interfering process: tmbmsrv.exe,conhost.exe,conhost.exe, context: Startup, first merged sequence: 1613″のところです。 “failed file: conhost.exe”に続く”interfering process: “のところで、原因となった可能性のあるプロセスが列挙されています。そこには”tmbmsrv.exe”の表記が・・・・

“tmbmsrv.exe”ってトレンドマイクロのアンチウィルス・・・セーフモードで起動して、コントロールパネルのサービスから アンチウィルス のサービスを無効にして再起動。アンチウィルスが動作しない状態にして、Windows Updateを実行すると・・・成功しました。

事務に使う業務用パソコンに限ってはVDIも良い

最低限必要なパソコンのスペックって」の話の続き。

事務用パソコンに限った話だが、もし一拠点の事務用パソコンの台数が15台以上あるならVDI(Virtual Desktop Infrastructure、仮想デスクトップ基盤)を検討してみるのもよい。

VDIには様々なソリューションがあるが、おすすめしたいのは、最もコストパフォーマンスに優れる、Windows Server 2016にRDPで接続する、正確にはSBC(Server Based Computing)と呼ばれるタイプ。

パソコンを購入する場合、処理のピークを短い時間で終わらせるために十分な性能のCPUやストレージを用意する必要があります。ですが処理のピークが続くのは数秒(ピークが数秒で終わる程度の性能を持つCPUとストレージを準備したのだから当然だ)でしかありません。それ以外の時にはパソコンの持つ性能の数%しか使っていないので、潜在性能の10%も活用できていない事になります。

もしCPUやSSDを複数のユーザーで共有できるなら、メモリを16GBも積めば1台のパソコンで8人程度が同時に作業しても、体感速度はほとんど変わらないはずです。

そこで十分に高い性能を持つサーバーを用意します。そのサーバにシンクライアント端末という低性能な端末(モニター、マウス、キーボードが繋がっているだけで、実質的にCPUにメモリやストレージはありません。単体ではパソコンとして機能しません。)で接続して使います。それでもユーザーにとっては、普通にパソコンを使っているのと操作は変わりません。

仮に15人の場合には概ね下記のような金額になります。
サーバー(8コアCPU、メモリ32GB、SSD1.4TB RAID5)が90万円。シンクライアント(モニター込み)が5万円×15台で75万円。Windows Server 2016のCALが5000円×15台で7.5万円。割安なOfficeのプレインストールモデルを使うことは出来ないので、Office 2016 Std(約5万円)を購入するか、Office 365 ProPlus(月額1,310円)を契約する必要があります。トータルで250万円ぐらいで導入できるはずです。

15万のパソコンを15台買うなら225万円ですから25万円ほど割高になっています。でもそれ以上にメリットもあるのです。

・メンテナンスの手間が激減
サーバーにだけ設定すればよいので、手間が激減します。新しいプリンタのドライバや業務アプリケーションをインストールするにも、15台のパソコンにインストールしてあるく必要はありません。VDI用サーバ1台にインストールすればOKです。

・バックアップの手間が激減
クライアントパソコン内に保存されている設定やデータのバックアップはかなり大変です。実際にはパソコン内のデータバックアップは諦めている事が多いでしょう。VDI用サーバーのバックアップさえ取っていれば、各自のデスクトップやマイドキュメントのファイルもしっかりバックアップをとれます。

・故障時の復旧作業が激減
パソコンが壊れた場合、新しいパソコンに必要なアプリケーションのインストールや設定を施し、故障したパソコンのHDDが必要なデータを取り出してコピーする。場合によっては1日~2日は潰れてしまいます。VDI環境なら設定やデータはVDI用サーバーに保持されているので、新しいシンクライアント端末をつなぐだけで復旧します。予備にシンクライアント端末を1台余計に買っておくなら、30秒で復旧できるのです。
サーバが壊れた場合ですが「5年間24時間365日4時間以内に訪問修理」とかを購入時に申し込んでも+30万円程度です。年間6万円程度の支出に過ぎません。同じ事をパソコンで申し込んだら+100万円、年間20万円程度かかるであろう事を考えたら、安いものです。

・体感速度はむしろ向上
サーバー全体ではCPUのコア数もSSDの速度も、個人にパソコンを与えていた場合の2倍ほどになってます。したがってピーク時の処理性能も個人にパソコンを持たせていたときの2倍、ユーザーを待たせるような重たい処理も短時間で終わるようになり、体感速度も増します。

・在宅勤務やサテライトオフィスにも対応
VPNによる社内ネットワークへの接続方法さえ準備すれば、流行の在宅勤務やサテライトオフィスにも対応できます。全従業員を対象とするのは内部統制的な難しさもあるでしょうけど、部長の自宅にVPNルーターとシンクライアントを設置(10万円程度)するだけで「自宅でも会社と同じ作業ができる」ぐらいの事は簡単に実現できます。

ちなみに15台だと25万円ほど高くついてますが、30台だとサーバ(16コアCPU、メモリ64GB、SSD1.4TB RAID5)の価格が約160万円、他は同じだから総額で約320万円。15万のパソコンを30台買うと450万円なので、130万円くらい安くなる計算です。こうなると事務用パソコンに限っては、VDIを使わない理由は無いですね。

ちなみに技術者用パソコンをWindows Server 2016のRDPで共有するのは無理です。一般ユーザーよりも強い、管理者権限やデバッグ権限を与えてもらわないと仕事になりません。頻繁に管理者権限で設定を変更することになるので、ちょっとしたミスで全員巻き添えで仕事がとまる可能性が高いです。Hyper-VやVMWareを使ったVDIなら行けますが、さらにコストが高くなります。

またデザイナ用パソコンをVDIにするのは完全に無理です。GPUが使えなくなる上に、画面上の表示品質下がるので、おそらく仕事になりません。

最低限必要な業務用パソコンのスペックって

低スペックPCを使わせる事の損失・・・
人権を満たす最低スペックのパソコンとか、Twitterで話題になっているようなので、補足説明ておく。

・事務職・・・15万円前後

CPU:Intel i5 or i3(4コア)
メモリ:8GB(4GB×2枚)
ストレージ:SSD 128GB
モニタ:24インチ(設置スペースがあるならデュアルモニター)

事務職でこれが最低スペックな理由は、これ以上スペックを落とすと価格差以上に性能が低下してしまうため。例えばCPUをCeleronに落とすと数千円安くなるが、性能は半分以下になる。モニターも20インチにすれば数千円安くなるが、A4資料を画面上で閲覧することすら困難になる。
メモリが8GBなのには二つの理由がある。
一つ目はデュアルチャンネルを有効にするため。同サイズのメモリを2枚さすとデュアルチャンネルが有効になってメモリアクセス速度が2倍になる。同一メモリサイズでもデュアルチャンネルが有効か否かで実行速度が30%前後異なってくる。2GB×2枚でもデュアルチャンネルは有効になるが、2GBのメモリカードはほとんど製造されておらず流通していない。メーカーによっては16GB(8GB×2枚)以上にしないとデュアルチャンネルが有効にならない場合もある。この場合には16GBにしたほうが良い。
二つ目はメモリスワップが発生した場合にSSDの寿命が短くなってしまうこと。最近のアプリケーションはメモリをたくさん使って早く動かす設計になっていることが多い。そのためWEBブラウザだけでも1GB程度のメモリを使ってしまうことは珍しくない。SSDの欠点は書込み可能回数に制限があり、頻繁に書込みを行うと寿命が短くなることにある。メモリが不足してメモリスワップが発生し、SSDへの書き込み回数が増えると、SSDがより早く寿命を迎えることになる。SSDの容量を増やせば書込み可能回数も増やせるが、SSDよりメモリのほうが安い。
SSDが128GBとかなり小さいのは、日常的に使用するデータはファイルサーバに保存していると考えているため。128GBでも事務作業で使用するようなアプリケーションのインストールや、一時的な作業ファイルを置くのに、困ることは少ないと思う。128GBより小さくすること、Windows Updateのための作業領域が不足するなどの問題に直面する。

・技術職・・・30万円前後

CPU:Intel i5 又は i7
メモリ:16~32GB
ストレージ:SSD 256GB+HDD 数TB
モニタ:27インチ(設置スペースがあるならデュアルモニター、2台目は24インチでも可)

最低メモリが16GBに増えている。エンジニアは複数のツールを同時に起動して作業する機会がどうしても増える。統合開発環境などは、メモリを多く使う事が多い。WEBブラウザに、Officeに、メールに、統合開発環境に、ビジネス用チャットに・・・と立ち上げていくと到底8GBのメモリ消費では収まらない。最低でも16GB必要となる。

できれば32GBほしい。32GBあると仮想OSをストレスなく利用できる。仮想OSを使うと、テスト用のOSを作業前に保存していた状態に数十秒で戻すことが出来る。そのためインストールのテストや、環境を壊す恐れのあるようなテストが非常に捗る。仮想OSを使えないと、たびたび半日かけてOSを戻す羽目になるので、かなり大変なのだ。
またメインで使用している環境に共存できないソフトウェアを使ってテストしなければならない場合も便利である。特定バージョンのOSでしな再現しない問題や、古いバージョンのOfficeでしか再現しない問題などをテストするために、別途パソコンを用意してゼロからインストールしていては時間がかかりすぎるのだ。

CPUは早いに越したことはないですが、i7以上のCPUや、高速なグラフィックスカードは機械学習でもするのでない限りは必要ないです。

・デザイン職・・・50万円前後

CPU:Intel i5 又は i7
メモリ:16~32GB
ストレージ:SSD 256GB(容量不足時にはHDDを追加)
GPU:5万円前後
モニタ:27インチ(カラーマネジメント対応)

CADやCG、動画を扱うなら上記の技術職向けPCに加えて、5万円程度のGPUが必要になります。
そして何より重要なのがモニターです。安物のモニターだと微妙な色の差を視認できなかったり、モニター毎の発色の差を微調整する機能が不足していて、色校正に手間どってトラブルの原因になります。カラーマネジメント機能のついたモニターは、一般的な事務用モニターの価格より2~3倍ほど高いです。27インチモニターだと20万円ちかい金額となります。
意識せずにマックを使っているデザイナーも少なくないですが、デザイン職にマックが支持されてきた理由もここにあります。マックのモニターは最初から同じ発色になりように微調整されて販売されており、カラーマネジメントの云々を意識する必要がないのです。カラーマネジメント機能のついたモニターを買うと、結果的にマックと変わらない値段になってしまいます。もしデザイナーがWindowsではなくてマックで仕事をしたいというなら、素直にマックを買ってあげたほうが安いです。

でも、事務用に限るならパソコンを使う事自体を止めてしまう手もあります。「事務用に限ってはVDIの方が良いかもよ?」に続きます。