当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 获取 PowerShell 中命令的历史记录

作者:精品下载站 日期:2024-12-14 05:31:32 浏览:12 分类:玩电脑

获取 PowerShell 中命令的历史记录


[玩转系统] 获取 PowerShell 中命令的历史记录

使用 Get-History Cmdlet

使用Get-History获取PowerShell中执行命令的完整历史记录。

使用获取历史记录:

Get-History

输出 :

  Id CommandLine
  -- -----------
   1 Get-History
   2 ls
   3 ping example.com
   4 Get-History
   5 Get-History
   6 Get-Process
   7 Get-Service

在此示例中,使用 Get-History cmdlet 获取命令历史记录。执行上述代码时,我们可以看到已执行命令的列表被返回并显示在屏幕上,以及它们各自的Id(显示命令执行的顺序)和CommandLine (显示我们输入的文本或命令)。从上面的输出中,我们可以看到 PowerShell 中执行了 7 个命令。

默认情况下,Get-History 在执行时不会显示所有对象属性。要在控制台上显示所有对象属性,请考虑以下示例:

使用获取历史记录:

Get-History | Select-Object -Property *

输出 :

Id                 : 1
CommandLine        : Get-History
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:37:00 PM
EndExecutionTime   : 7/19/2023 3:37:00 PM

Id                 : 2
CommandLine        : ls
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:37:04 PM
EndExecutionTime   : 7/19/2023 3:37:05 PM

Id                 : 3
CommandLine        : ping example.com
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:37:58 PM
EndExecutionTime   : 7/19/2023 3:38:02 PM

Id                 : 4
CommandLine        : Get-History
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:38:13 PM
EndExecutionTime   : 7/19/2023 3:38:13 PM

Id                 : 5
CommandLine        : Get-History
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:52:33 PM
EndExecutionTime   : 7/19/2023 3:52:33 PM

Id                 : 6
CommandLine        : Get-Process
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:53:13 PM
EndExecutionTime   : 7/19/2023 3:53:14 PM

Id                 : 7
CommandLine        : Get-Service
ExecutionStatus    : Completed
StartExecutionTime : 7/19/2023 3:53:25 PM
StartExecutionTime : 7/19/2023 3:53:25 PM

在此代码中,使用管道运算符 (|) 和 Get-History 的输出将传递到 Select-Object cmdlet >-property * 选项获取控制台上的所有对象属性。我们可以观察到,给定的命令返回了IdCommandLineExecutionStatus以及命令的持续时间。

从历史记录中获取特定命令

如果您想从历史记录中获取最后三个执行的命令,请查看下面的示例

使用获取历史记录:

Get-History -Count 3

输出 :

  Id CommandLine
  -- -----------
   5 Get-History
   6 Get-Process
   7 Get-Service

在上面的示例中,-Count 选项与 Get-History cmdlet 一起使用,以从历史记录中获取最后 3 执行的命令。如果您想获取命令范围,请考虑以下示例。

注意:您可以根据需要更改-Count的值。例如,如果您想获取最近 20 个执行命令的列表,请运行 set count as -Count 20

重新执行历史命令

如果您想从已执行的历史记录中再次运行特定命令。考虑下面的例子。

使用调用历史记录:

Invoke-History -Id 6

输出 :

Get-Process

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    336      19     9204      24588       0.14  11012   5 ApplicationFrameHost
    624      44    29696       1492       1.11  16968   5 CalculatorApp
    285      19    21348      43392       0.50   2152   5 chrome
    387      24   227000     202836      65.38   2772   5 chrome
    445      23    92284     130664      10.91   3184   5 chrome
    283      19    21556      38792       0.28   3564   5 chrome
    325      22    64852     108200      15.77   6476   5 chrome
    370      24   110008     134700       7.47   7424   5 chrome
    246      16    15172      19488       0.56   7628   5 chrome
   1001      44   152880     139736     172.61   7644   5 chrome
    293      20   101448      71412      10.50   7800   5 chrome
    292      20    39724      62776       1.64   8096   5 chrome
    438      23   139896     165516      48.23   8832   5 chrome
    279      19    21992      41580       0.38   9356   5 chrome

在此代码片段中,Invoke-History cmdlet 用于调用 History 命令并使用给定 ID 执行该命令。在上述情况下,执行命令 id 6,即 Get-Process cmdlet。相同命令的另一种编写方式如下:

使用调用历史记录:

!6

这样,您可以使用感叹号 (!) 后跟命令 id 来重新执行历史记录中的命令。执行此命令时,您将获得与上面相同的输出。

将命令历史记录保存到文件中

如果您想以 CSV 文件的形式保存当前会话执行命令的历史记录以供将来使用,请查看以下示例。

使用获取历史记录:

Get-History | Export-CSV -Path 'C:\History\CommandHistory.Csv'

在此 PowerShell 脚本中,使用 | 管道运算符将 Get-History 的输出传递到 Export-CSV cmdlet 作为输入。这里,-Path选项用于指定我们要将历史命令以CSV形式保存的路径。

执行上述命令时,屏幕上不会显示任何输出。但是,已执行命令的列表与所有对象属性一起存储在路径 C:\History\CommandHistory.Csv 中。

注意:当前会话中执行命令的历史记录默认存储在内存中。一旦 PowerShell 窗口关闭,历史记录就会丢失。要默认存储会话之间的历史记录,请配置 PowerShell 将历史记录保存到文件中。

清除历史记录

使用Clear-History 清除PowerShell中的命令历史记录。

使用清除历史记录:

Clear-History

通过执行上述命令,当前 PowerShell 会话的历史记录将被删除。

这就是如何获取 PowerShell 中命令的历史记录。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯