[玩转系统] 如何使用 PowerShell 历史记录功能
作者:精品下载站 日期:2024-12-14 13:06:56 浏览:14 分类:玩电脑
如何使用 PowerShell 历史记录功能
您是否在命令行中忘记了某个命令,或者您希望保存历史记录,PowerShell 历史记录可以帮助您!
在本教程中,了解如何运行先前的命令、导入和导出以及清除历史记录。读完本文后,您将不再需要仅仅依靠向上和向下箭头键来检索历史记录!
先决条件
要学习本教程,请确保您使用 Windows 10 上的 Windows PowerShell 或任何受支持平台上的 PowerShell 7.x。
检索命令历史记录
如果您曾经丢失过某个命令,您可能需要保存它以便以后查找。如果是这样,PowerShell 通过保存历史记录以便快速检索来节省时间。要查看保存的历史记录,PowerShell 具有 Get-History
cmdlet。
在检索任何历史记录之前,您首先需要构建一些历史记录,因为历史记录会在每个控制台会话上重新启动。为此,请复制并运行以下代码以添加历史记录条目;任何代码都可以。命令需要在 Get-History
返回任何内容之前存在!
Get-Service -ServiceName 'BITS'
Get-Service | Where-Object -Property Name -Like "Microsoft*"
Get-Service | Where-Object -FilterScript {($_.Status -eq 'Running') -and ($_.StartType -eq 'Manual')}
现在您已经运行了一些命令(如下所示),您就有了可以使用的历史记录。
请注意敏感命令,其中可能包含不适合窥探的信息。例如,如果您不在代码中使用安全字符串,则密码或 API 机密等敏感信息将在历史文件中以纯文本形式可见!
现在使用Clear-Host命令来整理屏幕并进一步演示历史记录功能。
Clear-Host
清除屏幕并不意味着所有历史记录都消失了。要查找之前清除的命令,请点击向上↑或向下↓箭头快速查看控制台主机的命令历史记录。
当查找您之前运行的单个命令时,使用向上和向下箭头非常有用。但是如果重新运行多个命令呢?在这种情况下,要显示完整的会话历史记录,请输入 Get-History
命令,如下所示,该命令显示以前运行的命令的列表。
如下所示,Get-History
不仅返回已运行的命令,还返回命令 ID
以及该命令执行所需的时间。命令ID
稍后会派上用场。
Get-History
存储在 MaximumHistoryCount
变量中的最大默认历史记录条目为 4096
。使用以下命令更改此值以允许最多 32767
个条目:Set-Variable MaximumHistoryCount 32767
。
默认情况下,Get-History
cmdlet 不会返回所有对象属性。要返回所有对象属性,请将历史记录输出通过管道传送到 Select-Object
cmdlet。将输出通过管道传输到 Select-Object
cmdlet 将返回 StartExecutionTime
和 EndExecutionTime
属性,并引用这些属性来确定 Duration
。
Get-History | Select-Object -Property *
运行之前执行过的命令
现在您可以检索旧命令,这有什么用呢?大多数时候,PowerShell 用户需要执行这些命令。幸运的是,您无需复制/粘贴即可完成此操作。记住以前的命令或一系列命令可能很困难。要运行上一个命令,请执行 Invoke-History
cmdlet。
如果您一直在跟踪,您的历史记录中将会有以前的 Get-Service
命令。如前所述,每个历史记录条目都有一个关联的 ID
。
也许您需要重新运行之前运行的 Get-Service
命令之一。在这种情况下,复制并运行以下代码以重新运行第二个历史记录条目,如下面的演示所示。
Invoke-History -Id 2
您的 ID
值可能需要根据您的个人命令历史记录进行更改。
为 ID
参数指定值 2
,Invoke-History
cmdlet 会立即重新运行该命令,就像您直接键入该命令一样进入控制台。
除了数字之外,ID
参数还接受要匹配的模式。例如,运行 Invoke-History -Id 'Get-Service'
将查找以该值开头的所有历史记录条目。
导出 PowerShell 命令历史记录
经过长时间的工作后,您可能想要保存并导出命令。如果是这样,那么你很幸运。 PowerShell 几乎可以将任何内容导出到文本文件;命令历史也不例外。使用命令历史记录时,常见格式包括 CSV 或 XML。
保存您的 PowerShell 历史记录以供将来使用,如下所示。通过管道将 Get-History
传递到 Export-CSV
cmdlet 允许您将历史记录条目保存到文件中。在此示例中,PowerShell 将文件保存到C:\Temp,但您可以将命令历史记录保存到任何位置。
Get-History | Export-CSV -Path 'C:\Temp\CommandHistory.Csv'
要将历史记录导出为 XML:Get-History | Export-CliXml -Path ‘C:\Temp\CommandHistory.xml’
清除命令历史记录
随着时间的推移,您的历史记录可能会变得混乱,或者您可能运行了带有敏感值的命令,该值现在已保存到历史记录中。无论哪种情况,您可能都希望从命令历史记录中删除这些条目。为此,请使用 Clear-History
cmdlet 清除控制台历史记录。
默认情况下,Clear-History
命令会删除所有控制台历史记录。但是,如果您不想删除所有历史记录怎么办?在这种情况下,有选择地清除具有特定条目ID
、指定计数
条目或仅最新
条目集的历史记录。
如果您不想输入或定位特定的条目集,请将通配符模式数组传递给 CommandLine 参数以删除所有匹配的命令。
Clear-History -CommandLine *Help*, *Syntax
还有另一种类型的历史记录,它通过 PSReadLine 模块保存到磁盘。 Clear-History
cmdlet 仅清除当前内存中的控制台历史记录,但您可能还想清除所有已保存的磁盘历史记录条目。
要清除除上次运行命令之外的所有历史记录,请通过运行以下命令使用 PSReadline 方法:[Microsoft.PowerShell.PSConsoleReadLine]::ClearHistory()
在清除磁盘历史记录之前,您必须找到它的保存位置。为此,请复制并运行以下命令以检索历史文件磁盘位置。
$History = (Get-PSReadLineOption).HistorySavePath
$History
默认的 PSReadLine Windows 路径存储在 HistorySavePath
变量中,为:%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
现在在记事本中打开历史文件,类似于下图所示。每个历史记录条目都添加在最后保存的命令下方。
现在您已经了解了历史文件中的位置和内容,请使用 Remove-Item
cmdlet 删除历史文件,如下所示。
Remove-Item -Path $History -Verbose
运行另一个命令后,历史文件将重新生成。
导入命令历史记录
如果您打开了新的控制台会话或之前保存了一系列复杂的命令,您可能需要将它们导入到当前历史记录中。要将这些命令导入到当前的控制台历史记录中,请利用 Add-History
命令。
要导入以前的历史记录,您首先需要一个导出的历史记录文件。在上一节中,您在 CSV 文件中保存了一系列命令,也许您需要导入这些保存的命令。要导入以前的 CSV 文件并将历史记录条目添加到当前会话,请运行以下代码,并根据需要调整 CSV 路径。
$O$OldHistory = Import-Csv -Path 'C:\Temp\CommandHistory.Csv'
Add-History -InputObject $OldHistory -Passthru
如下所示,PowerShell 将之前的命令导入到控制台历史记录中,并使用 PassThru
参数显示它们。
并非所有命令都会返回传入的原始对象。通过添加某些 cmdlet 上可用的 PassThru
参数,可返回原始对象。
考虑安全性和 PowerShell 历史
尽管 PowerShell 历史很有用,但仍有一些安全注意事项需要注意。输入敏感命令时要小心,因为这些命令会保存到纯文本命令历史文件中,并接受审查。
假装你是一名“红队队员”。您想要对目标用户进行一些侦察。您可能对他们在正常一天中通过会话运行的命令、密码和 API 密钥感兴趣。
以下是您可以通过在 Notepad++ 中重新加载文本文件来实时查看目标历史文件的示例:
现在您有了目标正在使用的密码。只需查看其余的会话历史记录,您很可能会看到该密码的使用地点。
不要对你所看到的感到惊慌。了解你现在所知道的,你可以做出更好的决定。
您如何安全地处理秘密?通过使用 Get-Credential cmdlet 从磁盘或键盘输入检索凭据。通过使用 ConvertTo-SecureString cmdlet 转换为安全字符串来保护这些 API 密钥和其他机密。这两个 cmdlet 都不会在历史记录中显示秘密本身。 PowerShell Secrets Management 也是一个不错的选择。
在任何环境中,打开 ScriptBlock 和 Module 日志记录都是谨慎的做法。通过这种日志记录,PowerShell 对于攻击者来说是一个糟糕的选择,因为每次运行的代码都会被存储以供以后检索。
下一步是什么?
您现在应该知道 PowerShell 历史命令是如何工作的。现在,下次您丢失重要命令或需要保存会话历史记录时,您没有任何借口!
如果您需要清除除最后一次运行命令之外的所有历史记录,请通过运行使用 PSReadline 方法
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag