我有Powershell脚本。在调度程序中,我运行 bat 文件,它运行PS1文件。
BAT文件
Powershell.exe -executionpolicy remotesigned -File script.PS1
PS1文件
$path = "D:\data";
$limit = (Get-Date).AddHours(-3);
Get-ChildItem -Path $path -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force;
在同一个目录中,powershell会创建YYYYMMDD格式的目录,其中包含文件PowerShell_transcript.SERVER.t7eh07Gy.20230914031500.txt。下面是整个脚本运行。
举例来说:D:\data\20230914\PowerShell_transcript.SERVER.t7eh07Gy.20230914031500.txt等
如何禁用它?
我试过停止转录,等等。
我需要停止记录。
2条答案
按热度按时间vohkndzv1#
转录的开始可以由组策略确定,并独立于脚本执行。查看政策示例:
如果此键中有一个EnableTranscripting值,并且它不等于零,则转录被启用。
zzwlnbp82#
Re1ter's helpful answer提供了关键指针;让我补充一些背景资料:
Turn on PowerShell Transcription
策略(组策略[对象])的效果,这会导致所有PowerShell会话(无论是否交互)的 * 自动传输 *,就好像您在每个会话的开始和结束时调用了Start-Transcript
和Stop-Transcript
)。yyyMMdd
,例如。20230918
9月18日2023,在使用名称格式PowerShell_transcript.*.*.*.txt
的文件中,其中*
组件按顺序表示以下内容:server1
)IjrFVsl1
)[datetime]::Now.ToString('s') -replace '\D'
(例如,``)PowerShell_transcript.server1.IjrFVsl1.20230918162121.txt
Documents
目录中(通常为$HOME\Documents
;使用[System.Environment]::GetFolderPath('MyDocuments')
确定),但位置是可配置的。gpedit.msc
GUI或GroupPolicy
PowerShell模块中的小工具来管理策略。HKEY_LOCAL_MACHINE
(HKLM:
)注册表配置单元中,也可以在 user 级别定义,存储在每个用户的HKEY_CURRENT_USER
(HKCU:
)注册表配置单元中。下面的**
Get-AutomaticTranscriptionSettings
便捷函数**(源代码在底部)直接查询注册表,以便报告有效的策略设置,因此不需要GroupPolicy
模块,而GroupPolicy
模块需要安装RSAT工具。样品调用:
上面显示了在计算机级别上启用的PowerShell(核心)策略,该策略委托给Windows PowerShell策略(在同一级别上)
请注意,
OutputPathPattern
属性值可以直接传递给Get-ChildItem
,以列出所有现有的转录本。Get-AutomaticTranscriptionSettings
源代码: