2016-08-24 122 views
0

我有一个PowerShell程序,检查网站是否响应并检索数据,并使用invoke-webrequest函数将其放入文件中。我想记录请求的响应状态(200或任一方式)与请求的当前日期和时间。以下是一个工作脚本。唯一的问题是我不知道如何在日志文件的单行中连接我的日期时间变量和状态变量(用空格分隔)。在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 

我希望它像

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

我试图

LogWrite $datetime+$x.StatusCode 

LogWrite $datetime+" "+$x.StatusCode 

但无济于事。

回答

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

在字符串中使用$(<code>)将评估括号中的内容第一,然后将结果转换为字符串。 注意:您将需要使用双引号。

0

Add-Content支持-NoNewLine

表示此cmdlet不添加一个新行/回车的内容。

我会按照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 

这可以让你简单地输出回路,例如,无需先建立一个在内存中的字符串。