如何在PowerShell中记录IF语句?

时间:2017-12-12 17:57:21

标签: powershell

我创建了一个登录PowerShell脚本来检查文件,如果早于源,则将较新的文件复制到PC。我正在尝试记录结果,但我的日志文件始终为空。我哪里做错了?

# Set Source
$S_P = "\\NETWORK\S_P.exe"
$S_T = "\\NETWORK\S_T.exe"
$S_P_Date = (Get-Item $S_P -ErrorAction SilentlyContinue).LastWriteTime.ToString("yyyy-MM-dd")
$S_T_Date = (Get-Item $S_T -ErrorAction SilentlyContinue).LastWriteTime.ToString("yyyy-MM-dd")

# Set Destination
$D_P = "C:\TEMP1\S_P.exe"
$D_T = "C:\TEMP2\S_T.exe"
$DF_P = "C:\TEMP1"
$DF_T = "C:\TEMP2"
$D_P_Date = (Get-Item $D_P -ErrorAction SilentlyContinue).LastWriteTime.ToString("yyyy-MM-dd")
$D_T_Date = (Get-Item $D_T -ErrorAction SilentlyContinue).LastWriteTime.ToString("yyyy-MM-dd")
$D_Log = "C:\TEMP\updated.txt"

# Compare date and Copy
function Check_Copy {
    if (!(Test-Path $D_Log)) {New-Item $D_Log}

    if ((Test-Path $D_P) -and (Test-Path $D_T)) {
        if ($D_P_Date -le $S_P_Date) {Copy-Item $S_P $DF_P -Force}
        if ($D_T_Date -le $S_T_Date) {Copy-Item $S_T $DF_T -Force}
    } else {
        Copy-Item $S_P $DF_P -Force
        Copy-Item $S_T $DF_T -Force
    }
}

Check_Copy | Out-File $D_Log -Append

1 个答案:

答案 0 :(得分:1)

您需要使用PassThru参数将输出传送到您的文件。否则,输出将被隐藏。

只需将其添加到Copy-Item行,使其如下所示:

Copy-Item $S_P $DF_P -Force -PassThru
Copy-Item $S_T $DF_T -Force -PassThru

阅读this TechNet blog以了解有关在PowerShell中使用对象传递的更多信息。