求助:如何在PowerShell中让Get-Date与Get-Service输出在同一行
在PowerShell中让Get-Service输出每行包含当前时间
嗨,我来帮你实现这个需求!要让Get-Service的每条服务信息都和当前时间显示在同一行,我们可以利用PowerShell的计算属性来轻松搞定,下面是几种实用的方法:
方法1:自定义输出属性(推荐用于后续处理)
这种方法会生成带有时间属性的对象,方便你后续对输出结果进行筛选、导出等操作:
Get-Service | Select-Object ` @{Name='CurrentTime'; Expression={(Get-Date).ToString('yyyy-MM-dd HH:mm:ss')}}, Name, DisplayName, Status
- 解释:
@{Name='CurrentTime'; Expression={...}}定义了一个名为CurrentTime的计算属性,(Get-Date).ToString('yyyy-MM-dd HH:mm:ss')会生成格式化后的当前时间(你可以根据需求修改时间格式,比如HH:mm只显示时分)。 - 后面的
Name、DisplayName、Status是服务的常用属性,你可以根据需要添加或移除其他属性(比如StartType)。
方法2:保留默认输出样式并添加时间列
如果想要更贴近Get-Service默认的表格输出样式,只是额外增加时间列,可以用Format-Table:
Get-Service | Format-Table ` @{Name='CurrentTime'; Expression={(Get-Date).ToString('yyyy-MM-dd HH:mm:ss')}}, * ` -AutoSize
*表示保留服务对象的所有默认属性,-AutoSize会自动调整列宽,让输出更美观。
额外技巧:统一使用脚本启动时间
如果希望所有服务行都显示脚本开始执行的时间(而非每条服务的处理时间),可以先把时间存为变量:
# 先记录脚本启动时的时间 $scriptStartTime = (Get-Date).ToString('yyyy-MM-dd HH:mm:ss') # 输出时统一使用这个时间 Get-Service | Select-Object ` @{Name='ScriptStartTime'; Expression={$scriptStartTime}}, Name, DisplayName, Status
这样就能根据你的需求,灵活实现服务信息和时间在同一行的输出啦!
内容的提问来源于stack exchange,提问作者Brandon Scott
相关产品推荐
相关产品推荐

