我有一个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
但无济于事。
答案 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-Content
与Console.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
这允许您简单地在循环中输出,例如,无需首先构建内存中的字符串。