PowerShellのStart-TranscriptでDOSコマンドの実行結果が保存されない時の対処法
Pocket

LinuxやUNIXにあるscriptコマンドと同様に、PowerShellにも操作ログを記録するコマンドが存在する。それが『Start-Transcript(Stop-Transcript)』だ。
さて、このコマンドでログを記録する際、ちょっと困った挙動がある。コマンドプロンプト(cmd.exe)のコマンドを実行すると、ログに記録されないのだ…。

実際に、以下のようなコマンドを実行したとしよう。

Start-Transcript
Get-ChildItem
ipconfig
Stop-Transcript

20150227-000001

 

しかし、出力されるログは以下のようになってしまう。

**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20150227002537
ユーザー名  : Work-PC\Work 
コンピューター	  : WORK-PC (Microsoft Windows NT 6.1.7601 Service Pack 1) 
**********************
トランスクリプトが開始されました。出力ファイル: C:\Users\Work\Documents\PowerShell_transcript.20150227002537.txt
PS C:\> Get-ChildItem


    ディレクトリ: C:\


Mode                LastWriteTime     Length Name                                                                      
----                -------------     ------ ----                                                                      
d----        2014/01/25     22:48            cygwin                                                                    
d----        2014/01/25     18:04            cygwin64                                                                  
d----        2014/07/27     21:23            DeploymentShare                                                           
d----        2014/01/19     20:24            ipmitool                                                                  
d----        2014/08/09      7:40            Offiline                                                                  
d----        2009/07/14     12:20            PerfLogs                                                                  
d-r--        2015/01/18     17:06            Program Files                                                             
d-r--        2015/02/11     17:07            Program Files (x86)                                                       
d----        2015/02/26     22:49            PSTools                                                                   
d----        2014/12/21     16:31            Public                                                                    
d----        2014/03/03     23:49            teraterm                                                                  
d----        2014/03/03     22:45            teraterm_log                                                              
d-r--        2013/12/21      7:05            Users                                                                     
d----        2013/12/24      3:29            Windows                                                                   


PS C:\> ipconfig
PS C:\> 
PS C:\> Stop-Transcript
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20150227002552
**********************

見てわかるように、ipconfigの出力値だけが記録されていない。
これを出力させるには、以下のようにコマンドを実行させると良いだろう。

Sponsored Links

Start-Transcript
Get-ChildItem
ipconfig | Out-Default
Stop-Transcript

20150227-000002

 

今度は、きちんとログに出力させることが出来た。

**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20150227003014
ユーザー名  : Work-PC\Work 
コンピューター	  : WORK-PC (Microsoft Windows NT 6.1.7601 Service Pack 1) 
**********************
トランスクリプトが開始されました。出力ファイル: C:\Users\Work\Documents\PowerShell_transcript.20150227003014.txt
PS C:\> Get-ChildItem


    ディレクトリ: C:\


Mode                LastWriteTime     Length Name                                                                      
----                -------------     ------ ----                                                                      
d----        2014/01/25     22:48            cygwin                                                                    
d----        2014/01/25     18:04            cygwin64                                                                  
d----        2014/07/27     21:23            DeploymentShare                                                           
d----        2014/01/19     20:24            ipmitool                                                                  
d----        2014/08/09      7:40            Offiline                                                                  
d----        2009/07/14     12:20            PerfLogs                                                                  
d-r--        2015/01/18     17:06            Program Files                                                             
d-r--        2015/02/11     17:07            Program Files (x86)                                                       
d----        2015/02/26     22:49            PSTools                                                                   
d----        2014/12/21     16:31            Public                                                                    
d----        2014/03/03     23:49            teraterm                                                                  
d----        2014/03/03     22:45            teraterm_log                                                              
d-r--        2013/12/21      7:05            Users                                                                     
d----        2013/12/24      3:29            Windows                                                                   


PS C:\> 
PS C:\> ipconfig | Out-Default

Windows IP 構成


イーサネット アダプター ローカル エリア接続:

   接続固有の DNS サフィックス . . . : 
   IPv6 アドレス . . . . . . . . . . . : 240f:7:63e5:1:80f7:eca9:781f:987d
   一時 IPv6 アドレス. . . . . . . . . : 240f:7:63e5:1:8df6:cc92:d66f:6725
   リンクローカル IPv6 アドレス. . . . : fe80::80f7:eca9:781f:987d%10
   IPv4 アドレス . . . . . . . . . . : 192.168.0.183
   サブネット マスク . . . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . . . : fe80::1eb1:7fff:fe44:2d3c%10
                                       192.168.0.1

Tunnel adapter isatap.{59563340-7AE0-4F33-AD42-27CD5865DD5A}:

   メディアの状態. . . . . . . . . . : メディアは接続されていません
   接続固有の DNS サフィックス . . . : 

Tunnel adapter ローカル エリア接続*:

   接続固有の DNS サフィックス . . . : 
   IPv6 アドレス . . . . . . . . . . . : 2001:0:5ef5:79fb:147c:1472:8967:8e3c
   リンクローカル IPv6 アドレス. . . . : fe80::147c:1472:8967:8e3c%12
   デフォルト ゲートウェイ . . . . . : 
PS C:\> 
PS C:\> Stop-Transcript
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20150227003043
**********************

…う~ん、もうちょっと、Linuxとかの使い勝手に近づいて貰えないものだろうか。
bashからkshになっても、scriptコマンドは問題なく動作してくれるんだけど…

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。