Powershell 在一行中链接两个数组变量
现在,我有一个名为Powershell 在一行中链接两个数组变量,powershell,powershell-4.0,Powershell,Powershell 4.0,现在,我有一个名为$vlog的数组,它显示了某个文件夹中每个日志文件的最新实例$logpath,用于机器上运行的特定版本的服务$verno。它显示文件名和上次写入时间 $VLog = foreach ($log in $verno) { Get-ChildItem $LogPath | Where-Object {$_.Name -like "*$log-*"} | Select-Object -last 1 | Select-Object Name,
$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的上次写入时间#
这就是我现在拥有的:
$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
}
它不使用versioninfo属性。太好了!刚刚测试过,效果很好。我是PS新手,所以我没有意识到你可以像那样在{}中声明多个变量。@Tom H很高兴为你服务。查看
关于
帮助主题,了解一切功能。如果我的回答解决了你的问题,请注明✔️