在PowerShell中输出日期/时间

Ero*_*ocM 16 powershell powershell-4.0

我想在我的脚本中的各个位置输出日期时间以进行日志记录,所以我这样做:

$b = Get-Date
Write-Output "Backups complete at $b"

# more code here

$c = Get-Date
Write-Output "Backups complete at $c"
Run Code Online (Sandbox Code Playgroud)

我不得不使用多个字母表来获取最新的日期/时间.

是否有更简单的方法来执行此操作,或者每次我想再次使用它时是否必须重新建立日期?

bri*_*ist 27

将当前日期时间分配给变量后,您将捕获运行时的日期和时间Get-Date.

每次需要新的日期和时间时,都需要再次运行它.您可以避免使用变量:

Write-Output "Backups complete at $(Get-Date)"
Run Code Online (Sandbox Code Playgroud)

  • *咳嗽*使日期可分类与年 - 月 - 日 - 时 - 分 - 秒订购`写 - 输出'备份完成在$(Get-Date -Format u)"`*cough* (8认同)

HO *_*Pin 8

这是简单的 1,它允许您以您想要的格式格式化日期时间

$currentTime = Get-Date -format "dd-MMM-yyyy HH:mm:ss"
Write-Host $currentTime " Other log string message "
Run Code Online (Sandbox Code Playgroud)

输出

17-Aug-2020 10:06:19  other log string message 
Run Code Online (Sandbox Code Playgroud)


Mar*_*ndl 5

完成此操作的另一种方法是使用格式字符串,并且由于将其用于记录日志,我建议您编写一个函数,因为这将使您可以在一个位置更改所有日志消息的格式:

function Log-Message
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true, Position=0)]
        [string]$LogMessage
    )

    Write-Output ("{0} - {1}" -f (Get-Date), $LogMessage)
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用以下命令进行简单的日志记录:

Log-Message "Starting Backups"
Log-Message "Backups Completed"
Run Code Online (Sandbox Code Playgroud)

输出:

22.07.2016 08:31:15 - Starting Backups
22.07.2016 08:31:15 - Backups Completed
Run Code Online (Sandbox Code Playgroud)

  • @MovGP0你应该说明你为什么这么认为,而不仅仅是说明它。这样做有什么好处呢? (2认同)