在一行中链接两个数组变量

时间:2018-07-19 16:06:17

标签: powershell powershell-v4.0

现在,我有一个名为$vlog的数组,它针对特定版本的服务$logpath的每个版本,显示了某个文件夹$verno中每个日志文件的最新实例。在机器上运行。它显示文件名和最后写入时间。

$VLog = foreach ($log in $verno) {
    Get-ChildItem $LogPath | 
        Where-Object {$_.Name -like "*$log-*"} | 
        Select-Object -last 1 | Select-Object Name, LastWriteTime
}

此外,我使用Trim()-replace的组合将大部分名称缩减为仅显示日志文件名称中包含的相应版本号。

$vname = $vlog.name.Trim('service.logfile.prefix-') -replace ".{9}$"

基本上,它剪切文件的末尾(包含日期和扩展名.log),以及在每个文件的开头恒定的特定文本开头。这一切都很好。

现在麻烦了。

我需要从此日志文件数据中获取两项($vname,这是版本号),并为该THAT特定版本的日志文件获取相应的LastWriteTime。我需要它作为数组,将其进一步放入电子邮件的变量中

我需要说的是服务实例版本#VERSION#的最后记录时间是#VERSION的上次写入时间#。

这就是我现在拥有的:

$mailvar = foreach ($version in $vname) {
    "Service instance version $version was last logged at $PLEASEHELP."
}

我可以显示该句子的实例数,每个句子具有正确的版本号,但是我没有时间显示与该版本号相对应的上次写入时间。

1 个答案:

答案 0 :(得分:2)

我相信您正在寻找的是FileInfo属性LastWriteTime。这是简化的示例:

foreach ($log in $verno) {
    $file = (Get-ChildItem -Path $LogPath -Filter "*$log-*")[-1]
    $version = $file.Name.Trim('service.logfile.prefix-') -replace '.{9}$'
    $stamp = $file.LastWriteTime | Get-Date -UFormat '%Y-%m-%d %H:%M:%S'

    'Service instance version {0} was last logged at {1}' -f $version, $stamp
}