PowerShell技术咨询:命令状态判断、进程属性及帮助查询
PowerShell相关问题解答
问题1:能否将$?整合到一行命令中?
当然可以,但得先搞清楚$?的作用——它是PowerShell的自动变量,用来记录上一条命令的执行状态:成功返回True,失败返回False。
你给的示例Get-Process | Get-Member $?写法是不对的,因为Get-Member需要的是管道输入的对象,而不是直接传$?作为参数。如果要在同一行里执行命令并判断状态,有几种实用方式:
- 用分号分隔命令,先执行主命令,再根据
$?做后续操作:Get-Process; if ($?) { Write-Host "进程查询成功!" } else { Write-Host "进程查询失败,请检查权限或命令" } - 把命令执行和状态判断结合赋值,方便后续复用:
$processes = Get-Process; $isSuccess = $?
问题2:Get-Process的启动时间属性,以及和New-Timespan的配合
Get-Process里的StartTime属性就是用来显示进程启动时间的。比如查看记事本进程的启动时间,可以这么写:
Get-Process notepad | Select-Object Name, StartTime
这个属性完全可以和New-Timespan配合使用,最常见的场景是计算进程已经运行了多久。比如下面的命令会返回记事本进程从启动到现在的运行时长:
Get-Process notepad | ForEach-Object { New-Timespan -Start $_.StartTime -End (Get-Date) }
执行后会得到天、小时、分钟等详细的时间跨度信息。
问题3:用Get-Help查看相关变量信息
要查看和Get-Process、New-Timespan相关的变量,分两种场景操作:
查看命令本身的属性/参数及关联信息
直接用Get-Help加上命令名,加上-Full参数可以看到完整文档,里面会包含命令的属性(比如Get-Process的StartTime)、参数说明,以及可能提到的相关变量:# 查看Get-Process的完整帮助 Get-Help Get-Process -Full # 查看New-Timespan的完整帮助 Get-Help New-Timespan -Full如果只想快速查看参数细节,可以用
-Parameter *:Get-Help Get-Process -Parameter *查看PowerShell自动变量(比如
$?这类)的信息
像$?属于PowerShell的自动变量,专门有帮助文档介绍它们,执行以下命令就能看到所有自动变量的作用说明:Get-Help about_Automatic_Variables这个文档里会详细说明包括
$?在内的所有自动变量,以及它们和命令执行的关联。
内容的提问来源于stack exchange,提问作者Ruairi Carroll




