kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

profile.ps1が肥え太ってきた

PowerShellの書き方がやっとわかってきて、日々のツールをどんどんPowerShell化しています。リリース用にファイルの最終更新日をそろえるために最初こんなので

function Set-FileTime($filename, $LastWriteTime)
{
  $a = new-object System.io.FileInfo $filename
  $a.LastWriteTime = $LastWriteTime
}

でもなー、第二引数がちゃんと時刻とは限らないしなーとか思って、$LastWriteTime.GetType().FullNameでもみようか…と思って書き始めたけど、こうすればいいだけでしたね。

function Set-FileTime([string]$filename, [System.DateTime]$LastWriteTime)
{
  $a = new-object System.io.FileInfo $filename
  $a.LastWriteTime = $LastWriteTime
}

第二引数が正しくDateTimeのTryParse()でtrueになる文字列であれば、自動的に型変換してくれました。最初GetType()使って型情報見て、TryParse()でOKならば…とか思っていたのがばかみたい(^^;。
それはともかく、私はほとんどシステムのprofile.ps1に追加するのですが、複数のサーバーの%systemroot%\system32\windowspowershell\v1.0配下にprofile.ps1を展開するの、どうやってます?ログオンスクリプトでもいいのだけれど…。