在一行中链接两个数组变量
Linking two array variables in one line
现在,我有一个名为 $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
,即版本号),以及该特定版本的日志文件的相应 LastWriteTime
。我需要它作为一个数组,它将进一步放入一个电子邮件变量中
我需要说明的是,服务实例版本#VERSION# 的最后记录时间为#VERSION'S LAST WRITE TIME#。
这是我现在拥有的:
$mailvar = foreach ($version in $vname) {
"Service instance version $version was last logged at $PLEASEHELP."
}
我可以让它显示该句子的正确实例数,每个句子都有正确的版本号,但我无法获得显示与该版本号对应的最后写入时间的时间。
我相信您正在寻找的是 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
}
现在,我有一个名为 $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
,即版本号),以及该特定版本的日志文件的相应 LastWriteTime
。我需要它作为一个数组,它将进一步放入一个电子邮件变量中
我需要说明的是,服务实例版本#VERSION# 的最后记录时间为#VERSION'S LAST WRITE TIME#。
这是我现在拥有的:
$mailvar = foreach ($version in $vname) {
"Service instance version $version was last logged at $PLEASEHELP."
}
我可以让它显示该句子的正确实例数,每个句子都有正确的版本号,但我无法获得显示与该版本号对应的最后写入时间的时间。
我相信您正在寻找的是 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
}