首页 > 解决方案 > Powershell:选择字符串和正则表达式

问题描述

关于我为什么首先使用正则表达式的背景故事:

我正在为多个客户编写一个脚本,该脚本将集成到我们每两周一次的维护中。脚本设置为将计划任务的日期更改为脚本运行的日期,但不调整时间。

现在这本身很简单,但是我们有多个客户端,任务将运行多个不同的时间,我不想手动更新每个客户端的每个脚本,因为如果我们更新脚本,我们将不得不为每个人手动更新它。

所以我求助于 Select-String 和 Regex 来解决这个问题。

关于问题:

我正在运行以下代码

$test = Get-ScheduledTaskInfo -TaskName "Scheduled Shutdown"
$test | Select-String -inputobject {$_.LastRunTime} -Pattern '..:..:..'

输出以下

10/01/2019 18:30:00

但是我只想要实际的时间字符串,而不是日期。无论我将模式更改为什么,我都无法让它专门输出到时间。

我正在使用一个名为 RegExr 的网站来测试和运行脚本。

标签: powershellscheduled-taskswindows-scripting

解决方案


$test = Get-ScheduledTaskInfo -TaskName "Scheduled Shutdown"
(($test | Select-String -inputobject {$_.LastRunTime} -Pattern '..:..:..') -split ' ')[-1]

在空格处拆分时间字符串,然后选择时间


推荐阅读