在PowerShell中创建日志文件

时间:2016-08-24 11:03:15

标签: powershell

我有一个powershell程序,它检查站点是否正在响应并检索数据并使用invoke-webrequest函数将其放入文件中。我想用请求的当前日期和时间记录请求的响应状态(200或两种方式)。下面是一个工作脚本。唯一的问题是我不知道如何在日志文件的一行中连接我的datetime变量和我的状态变量(用空格分隔)。

    $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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

this is what I want,please click here to see what's here支持-NoNewLine

  

表示此cmdlet未向内容添加新行/回车。

我会遵循Add-ContentConsole.Write比喻:

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

这允许您简单地在循环中输出,例如,无需首先构建内存中的字符串。