PowerShellのファイル出力先を、実行したユーザのデスクトップにする場合に、「$env:USERPROFILE + “\Desktop\”filename.txt”」と指定するのは間違い。
この場合、ローカルディスクでは無く、ファイルサーバ上にDesktopが置かれるような環境に対応できない。
「[Environment]::GetFolderPath(“Desktop”)」で取得するのが正しい。
実際に、どういう風になるのか見てみる・・・
PS C:\Users\osakanataro> $env:USERPROFILE + "\Desktop" C:\Users\osakanataro\Desktop PS C:\Users\osakanataro> [Environment]::GetFolderPath("Desktop") \\fileserver1\Redirects$\osakanataro\Desktop
Desktop以外に指定できる内容については「Environment.SpecialFolder Enumeration」参照のこと。
「Added in the .NET Framework 4.」なっているものは、Windows7/WindowsServer2008などの古めのWindowsでは動かないので注意。