PowerShell能否根据其执行方式区分两者之间的差异?(计划任务-vs-控制台)

PowerShell能否根据其执行方式区分两者之间的差异?(计划任务-vs-控制台),powershell,scheduled-tasks,taskscheduler,windows-task-scheduler,Powershell,Scheduled Tasks,Taskscheduler,Windows Task Scheduler,用于修饰或说明PowerShell配置文件,并将命令历史记录存储到文件: 在我的profile.ps1中,我有: if ($Host.Name -eq 'ConsoleHost') { Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | Out-Null } 将我的命令保存到文件 但是,任何调用PowerShell的计划任务都会将执行的命令存

用于修饰或说明PowerShell配置文件,并将命令历史记录存储到文件:

在我的
profile.ps1
中,我有:

if ($Host.Name -eq 'ConsoleHost')
{
    Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | Out-Null
}
将我的命令保存到文件


但是,任何调用PowerShell的计划任务都会将执行的命令存储在该历史文件中。我希望将
if
语句更改为更智能的语句。

最好的办法可能是检查当前主机是否实现了接口:

if($host -is [System.Management.Automation.Host.IHostSupportsInteractiveSession])
{
    Register-EngineEvent ...
}

该设置仅限于您的个人资料,对吗?因此,请使用其他帐户来运行powershell计划的任务,默认情况下使用系统帐户,如果您没有将用户更改为任何任务的帐户,则最好不要使用if语句。

PSReadline模块是否尚未保存您的命令历史记录?它似乎没有这样做,否。是否应自动调用,或将其放入Profile.ps1中?标准PowerShell和ISE之间是否可以共享?命令历史记录写入到哪里?
PSReadline
模块仅适用于控制台版本(非ISE),默认情况下在Windows 10上安装并处于活动状态(在较旧的Windows OS版本上可以作为独立模块安装)。历史文件位于
(Get-PSReadlineOption)。HistorySavePath
。谢谢,但它看起来不起作用。我更新了Profile.ps1,然后重新运行计划的任务,历史文件也用task命令更新了。是的,仅限于我的配置文件。您的建议会使问题复杂化,因为它们是我的PS脚本,在我的信任下运行,用于处理我的文件/目录。因此,这就变成了更改NTFS权限之类的问题。