Add-History
向会话历史记录附加条目。
语法
Add-History
[[-InputObject] <PSObject[]>]
[-PassThru]
[<CommonParameters>]
说明
Add-History
cmdlet 用于在会话历史记录(即当前会话期间输入的命令的列表)的末尾添加条目。
会话历史记录是在会话期间输入的命令的列表。 会话历史记录表示命令的执行顺序、状态以及开始和结束时间。 当你输入每个命令时,PowerShell 会将其添加到历史记录,以便对其进行重复使用。 有关会话历史记录的详细信息,请参阅 about_History。
会话历史记录独立于 PSReadLine 模块维护的历史记录进行管理。 这两个历史记录在加载 PSReadLine 的会话中都可用。 此 cmdlet 仅适用于会话历史记录。 有关详细信息,请参阅 about_PSReadLine。
可以使用 Get-History
cmdlet 先获取命令,然后将这些命令传递给 Add-History
,也可以将这些命令导出到 CSV 或 XML 文件中,然后导入命令并将所导入的文件传递给 Add-History
。 可以使用此 cmdlet 向历史记录添加特定命令,或创建单个历史记录文件以保存来自多个会话的命令。
示例
示例 1:将命令添加到不同会话的历史记录
此示例将在一个 PowerShell 会话中键入的命令添加到另一个 PowerShell 会话的历史记录。
Get-History | Export-Csv -Path C:\testing\history.csv -IncludeTypeInformation
Import-Csv -Path C:\testing\history.csv | Add-History
第一个命令获取表示历史记录中的命令的对象,并将它们导出到 History.csv
文件中。
第二个命令是在另一个会话的命令行中键入的。 它使用 Import-Csv
cmdlet 来导入 History.csv
文件中的对象。 管道运算符 (|
) 将对象传递给 Add-History
cmdlet,此 cmdlet 将表示 History.csv
文件中的命令的对象添加到当前会话历史记录。
示例 2:导入和运行命令
此示例导入 History.xml
文件中的命令、将其添加到当前会话历史记录,然后运行合并后的历史记录中的命令。
Import-Clixml -Path C:\temp\history.xml | Add-History -PassThru | ForEach-Object -Process {Invoke-History}
第一个命令使用 Import-Clixml
cmdlet 来导入被导出到 History.xml
文件中的命令历史记录。 该管道运算符将命令传递给 Add-History
cmdlet,该参数将命令添加到当前会话历史记录。 PassThru 参数将表示所添加命令的对象传入管道。
然后,该命令使用 ForEach-Object
cmdlet 将 Invoke-History
命令应用于合并后的历史记录中的每个命令。 根据 ForEach-Object
cmdlet 的 Process 参数的要求,将 Invoke-History
命令设置为脚本块格式(括在大括号中,{}
)。
示例 3:将历史记录中的命令添加到历史记录末尾
此示例将历史记录中前五个命令添加到历史记录列表的末尾。
Get-History -Id 5 -Count 5 | Add-History
Get-History
cmdlet 获取包含最后一个命令 5 在内的五个命令。 管道运算符将这些命令传递给 Add-History
cmdlet,此 cmdlet 将它们附加到当前历史记录中。 Add-History
命令不包括任何参数,但 PowerShell 将通过管道传递的对象与 Add-History
的 InputObject 参数相关联。
示例 4:将 .csv 文件中的命令添加到当前历史记录
此示例会将 History.csv
文件中的命令添加到当前会话历史记录。
$a = Import-Csv -Path C:\testing\history.csv
Add-History -InputObject $a -PassThru
Import-Csv
cmdlet 导入 History.csv
文件中的命令,并将其内容存储在变量 $a
中。
第二个命令使用 Add-History
cmdlet 将 History.csv
中的命令添加到当前会话历史记录。 它使用 InputObject 参数来指定 $a
变量,并使用 PassThru 参数生成要在命令行中显示的对象。 在没有 PassThru 参数的情况下,Add-History
cmdlet 不生成任何输出。
示例 5:将 .xml 文件中的命令添加到当前历史记录
此示例会将 history.xml
文件中的命令添加到当前会话历史记录。
Add-History -InputObject (Import-Clixml -Path C:\temp\history.xml)
InputObject 参数来将括号中命令的结果传递给 Add-History
cmdlet。 先执行括号中的命令,该命令将 history.xml
文件导入到 PowerShell 中。 然后,Add-History
cmdlet 将该文件中的命令添加到会话历史记录。
参数
-InputObject
指定要作为 HistoryInfo 对象添加到会话历史记录的条目数组。
可以使用此参数将 HistoryInfo 对象(例如由 Get-History
、Import-Clixml
或 Import-Csv
返回的对象)提交到 Add-History
。
类型: | PSObject[] |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-PassThru
表示此 cmdlet 将返回它所获取的每个历史记录条目的 HistoryInfo。 默认情况下,此 cmdlet 将不产生任何输出。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将 HistoryInfo 对象传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
如果使用 PassThru 参数,则此 cmdlet 会返回 HistoryInfo 对象。
备注
会话历史记录是在会话期间输入的命令(包含 ID)的列表。 会话历史记录表示命令的执行顺序、状态以及开始和结束时间。 当你输入每个命令时,PowerShell 会将其添加到历史记录,以便对其进行重复使用。 有关会话历史记录的详细信息,请参阅 about_History。
若要指定要添加到历史记录中的命令,请使用 InputObject 参数。 Add-History
命令仅接受 HistoryInfo 对象,例如由 Get-History
cmdlet 的每个命令返回的对象。 不能向其传递路径和文件名,也不能传递命令列表。
可以使用 InputObject 参数将 HistoryInfo 对象的文件传递到 Add-History
。 为此,请使用 Export-Csv
或 Export-Clixml
cmdlet 将 Get-History
命令的结果导出到文件中,然后使用 Import-Csv
或 Import-Clixml
cmdlet 导入文件。 随后,可通过管道或以变量形式将导入的 HistoryInfo 对象的文件传递到 Add-History
。 有关详细信息,请参阅示例。
传递给 Add-History
cmdlet 的 HistoryInfo 对象的文件必须包括类型信息、列标题和所有 HistoryInfo 对象的属性。 如果想要将对象传递回 Add-History
,请不要使用 Export-Csv
cmdlet 的 NoTypeInformation 参数并且不要删除类型信息、列标题或该文件中的任何字段。
若要修改会话历史记录,请将会话导出到 CSV 或 XML 文件中、修改该文件、导入该文件,然后使用 Add-History
将其附加到当前会话历史记录。