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-CSV 或 Export-Clixml 将 Get-History 命令的结果导出到文件中,然后使用 Import-CSV 或 Import-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 将该文件中的命令添加到会话历史记录中。