2016-08-24 9 views
0

私は、サイトが応答しているかどうかをチェックしてデータを取得し、invoke-webrequest関数を使用してファイルに格納するpowershellプログラムを用意しています。リクエストの現在の日付と時刻を含むリクエストのレスポンスステータス(200またはいずれか)を記録します。以下は作業スクリプトです。唯一の問題は、日時変数と状態変数(スペースで区切って)をログファイルの1行に連結する方法がわかりません。powershellでログファイルを作成する

$Logfile = "D:\PROJECTS\mylog.log" 
    Function LogWrite 
    { 
     Param ([string]$logstring) 

     Add-content $Logfile -value $logstring 
    } 
    $datetime = get-date 

    $x = invoke-webrequest -Uri http://somesite/form/Download?uid=$number"&"sdate=$startdate"&"edate=$enddate -OutFile D:\PROJECTS\Timekeeping\build_src\$Branch-$enddate.dat -PassThru 
    if($x.StatusCode -eq 200){ 
     LogWrite $datetime 
     LogWrite $x.StatusCode 
    }else{ 
     LogWrite $datetime 
     LogWrite $x.StatusCode 
    } 

私mylog.logの結果は次のとおりです。

08/24/2016 18:43:27 its alive! 
    08/24/2016 18:43:27 
    200 

が、私はそれが私が

LogWrite $datetime+$x.StatusCode 

を試してみました

08/24/2016 18:43:27 its alive! 
    08/24/2016 18:43:27 200 
のようになりたいです
LogWrite $datetime+" "+$x.StatusCode 

しかし、役に立たない。まず文字列に結果を変換するブラケットの内容を評価します文字列内$(<code>)を使用して

答えて

2
LogWrite "$datetime $($x.StatusCode)" 

注::二重引用符を使用する必要があります。

0

Add-Content-NoNewLineをサポートしています。

は、このコマンドレットのコンテンツへの新しい行/改行を追加しないことを示します。

私はConsole.WriteConsole.WriteLineメタファーたどる:これは、例えば、最初のメモリ内の文字列を構築することなく、あなたがループ内だけで出力することができます

Function LogWriteLine 
{ 
    Param ([string]$logstring) 

    Add-content $Logfile -value $logstring 
} 

Function LogWrite 
{ 
    Param ([string]$logstring) 

    Add-content $Logfile -NoNewLine -value $logstring 
} 

... 

LogWrite $datetime 
LogWrite ' ' 
LogWriteLine $x.StatusCode 

を。

関連する問題