Add-History

向会话历史记录追加条目。

语法

Add-History [[-InputObject] <PSObject[]>] [-PassThru] [<CommonParameters>]

说明

Add-History cmdlet 用于在会话历史记录(即当前会话期间输入的命令的列表)的末尾添加条目。

可以使用 Get-History cmdlet 先获取命令,然后将命令传递给 Add-History,也可将获取的命令导出到 CSV 或 XML 文件中,再导入命令,随后将所导入的文件传递给 Add-History。可以使用此 cmdlet 向历史记录添加特定命令,或创建单个历史记录文件以保存来自多个会话的命令。

参数

-InputObject <PSObject[]>

将指定的 HistoryInfo 对象添加到会话历史记录中。可以通过此参数将使用 Get-History、Import-Clixml 或 Import-CSV 获取的 HistoryInfo 对象提交到 Add-History。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-PassThru

对每个历史记录条目返回一个历史记录对象。默认情况下,此 cmdlet 将不产生任何输出。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

Microsoft.PowerShell.Commands.HistoryInfo

可以通过管道将 HistoryInfo 对象传递给 Add-History。

输出

“无”或 Microsoft.PowerShell.Commands.HistoryInfo

如果使用 PassThru 参数,则 Add-History 生成 HistoryInfo 对象。否则,此 cmdlet 将不产生任何输出。

说明

会话历史记录是会话期间输入的命令(包含 ID)的列表。会话历史记录表示命令的执行顺序、状态以及开始和结束时间。输入每条命令时,Windows PowerShell 会将其添加到历史记录中,以便对其进行重复利用。有关会话历史记录的详细信息,请参阅 about_History。

若要指定要添加到历史记录中的命令,请使用 InputObject 参数。Add-History 命令只接受 HistoryInfo 对象,例如那些由 Get-History 为每条命令所生成的对象。不能向其传递路径和文件名,也不能传递命令列表。

可以使用 -InputObject 参数来向 Add-History 传递 HistoryInfo 对象的文件。为此,请使用 Export-CSVExport-ClixmlGet-History 命令的结果导出到文件中,然后使用 Import-CSVImport-Clixml 导入该文件。随后,可将所导入的 HistoryInfo 对象的文件通过管道或以变量形式传递给 Add-History。有关详细信息,请参阅示例。

传递给 Add-History 的 HistoryInfo 对象文件必须包括 HistoryInfo 对象的类型信息、列标题以及所有属性。若要将该对象传递回 Add-History,请不要使用 Export-CSV 的 NoTypeInformation 参数,并且不要删除文件中的类型信息、列标题或任何字段。

若要编辑会话历史记录,请将会话导出到 CSV 或 XML 文件中,在编辑该文件后,导入该文件,并使用 Add-History 将其追加到当前会话历史记录。

示例 1

C:\PS>get-history | export-csv c:\testing\history.csv

C:\PS>import-csv history.csv | add-history

说明
-----------
这些命令将在一个 Windows PowerShell 会话中键入的命令添加到另一个 Windows PowerShell 会话的历史记录中。第一条命令获取表示历史记录中的命令的对象,并将它们导出到 History.csv 文件中。第二条命令是在另一个会话的命令行中键入的。该命令使用 Import-Csv cmdlet 导入 History.csv 文件中的对象。管道运算符将对象传递给 Add-History cmdlet,后者将表示 History.csv 文件中的命令的对象添加到当前会话历史记录中。





示例 2

C:\PS>import-clixml c:\temp\history.xml | add-history -passthru | foreach-object {invoke-history}

说明
-----------
此命令先导入 History.xml 文件中的命令,接着将它们添加到当前会话历史记录中,然后执行合并后的历史记录中的命令。

第一条命令使用 Import-Clixml 命令来导入被导出到 History.xml 文件中的命令历史记录。管道运算符 (|) 将命令传递给 Add-History 参数,该参数将命令添加到当前会话历史记录中。PassThru 参数将表示所添加命令的对象传入管道。

然后该命令使用 ForEach-Object cmdlet 将 Invoke-History 命令应用于合并后的历史记录中的每个命令。Invoke-History 命令设置为脚本块格式(括在大括号 ({}) 中),这是因为即使在只应用一个命令的情况下,ForEach-Object 也要求以脚本块的形式提供命令。





示例 3

C:\PS>get-history -id 5 -count 5 | add-history

说明
-----------
此命令将历史记录中前五条命令添加到历史记录列表的末尾。它使用 Get-History cmdlet 来获取包含最后一条命令 5 在内的五条命令。管道运算符 (|) 将这些命令传递给 Add-History cmdlet,后者将它们追加到当前历史记录中。Add-History 命令不包含任何参数,但 Windows PowerShell 将通过管道传递的对象与 InputObject 参数相关联。





示例 4

C:\PS>$a = import-csv c:\testing\history.csv

C:\PS>add-history -inputobject $a -passthru

说明
-----------
这些命令会将 History.csv 文件中的命令添加到当前会话历史记录。第一条命令使用 Import-Csv cmdlet 导入 History.csv 文件中的命令,将该文件的内容存储在变量 $a 中。第二条命令使用 Add-History cmdlet 将 History.csv 中的命令添加到当前会话历史记录中。它使用 InputObject 参数指定 $a 变量,并使用 PassThru 参数生成要在命令行中显示的对象。如果没有 PassThru 参数,则 Add-History 不会产生任何要显示的输出。





示例 5

C:\PS>add-history -inputobject (import-clixml c:\temp\history01.xml)

说明
-----------
此命令将 History01.xml 文件中的命令添加到当前会话历史记录中。它使用 InputObject 参数来将圆括号中命令的结果传递给 Add-History。圆括号中的命令首先执行,该命令将 History01.xml 文件导入到 Windows PowerShell 中。然后,Add-History 将该文件中的命令添加到会话历史记录中。





另请参阅

概念

about_History
Get-History
Invoke-History
Clear-History