如何防止在PowerShell中保存以空格开头的输入历史记录?

lok*_*oki 4 shell powershell input-history

在 bash 中(至少在 Ubuntu 中),可以不保存历史记录中以空格开头的命令 (HISTCONTROL)。有没有办法在 Powershell 中获得此功能?

chu*_*utz 12

至少从 PowerShell 5.1 开始,您可以使用Set-PSReadlineOption-AddToHistoryHandler验证是否应使用自定义函数将命令添加到历史记录中。

-AddToHistoryHandler指定一个 ScriptBlock,用于控制将哪些命令添加到 PSReadLine 历史记录中。

ScriptBlock 接收命令行作为输入。如果 ScriptBlock 返回$True,则命令行将添加到历史记录中。

为了完整起见,这里有一个代码示例,您可以将其添加到您的$PROFILE.CurrentUserAllHosts

Set-PSReadLineOption -AddToHistoryHandler {
    param($command)
    if ($command -like ' *') {
        return $false
    }
    # Add any other checks you want
    return $true
} 
Run Code Online (Sandbox Code Playgroud)

  • 虽然以空格开头的命令不会保存到文件“(Get-PSReadLineOption).HistorySavePath”,但它不会影响命令“Get-History”。以空格开头的条目仍将被输出。 (2认同)