Powershell 将删除的文件记录到文本文件中
我想知道如何将此脚本中的操作记录到文本文件中,因为我不知道如何执行此操作,因为cmdletPowershell 将删除的文件记录到文本文件中,powershell,Powershell,我想知道如何将此脚本中的操作记录到文本文件中,因为我不知道如何执行此操作,因为cmdletStart-Transcript对我不起作用,而且我无法在Internet上找到解决方案 问题是Where-Objectcmdlet不会输出Get-ChildItem捕获的任何内容 有人有解决这个问题的好办法吗 $limit = (Get-Date).AddDays(-30) $path = Split-Path -Parent $MyInvocation.MyCommand.Definition Ge
Start-Transcript
对我不起作用,而且我无法在Internet上找到解决方案
问题是Where-Object
cmdlet不会输出Get-ChildItem
捕获的任何内容
有人有解决这个问题的好办法吗
$limit = (Get-Date).AddDays(-30)
$path = Split-Path -Parent $MyInvocation.MyCommand.Definition
Get-ChildItem -Path $path -Recurse -Force | Where-Object {
!$_.PSIsContainer -and
$_.LastWriteTime -lt $limit
} | Remove-Item -Force
Get-ChildItem -Path $path -Recurse -Force | Where-Object {
$_.PSIsContainer -and
(Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object {
!$_.PSIsContainer
}) -eq $null
} | Remove-Item -Force -Recurse
你好,先生
您可以使用几种不同的方法
=将流分叉到文件Tee对象
=在变量中累积信息-PipelineVariable
- 使用循环=将日志放入其中的文件步骤
- 将每个对象的
放入管道
它既可以记录您的信息,也可以执行
李>删除项
where Object
脚本块所在的位置添加一个ForEach Object
,并将筛选测试和各种操作都放在该块中
保重,李先生你好 您可以使用几种不同的方法
=将流分叉到文件Tee对象
=在变量中累积信息-PipelineVariable
- 使用循环=将日志放入其中的文件步骤
- 将每个对象的
放入管道
它既可以记录您的信息,也可以执行
李>删除项
where Object
脚本块所在的位置添加一个ForEach Object
,并将筛选测试和各种操作都放在该块中
保重,李试试这样的
$limit = (Get-Date).AddDays(-30)
$path =Split-Path -Parent $MyInvocation.MyCommand.Definition
Get-ChildItem $path -file -recurse -force | where LastWriteTime -lt $limit |
Tee-Object -FilePath "c:\temp\deleted.txt" -Append | Remove-Item
Get-ChildItem $path -directory |
where {(Get-ChildItem $_.FullName -file -Recurse | select -First 1) -eq $null} |
Tee-Object -FilePath "c:\temp\deleted.txt" -Append | Remove-Item
试试这样的
$limit = (Get-Date).AddDays(-30)
$path =Split-Path -Parent $MyInvocation.MyCommand.Definition
Get-ChildItem $path -file -recurse -force | where LastWriteTime -lt $limit |
Tee-Object -FilePath "c:\temp\deleted.txt" -Append | Remove-Item
Get-ChildItem $path -directory |
where {(Get-ChildItem $_.FullName -file -Recurse | select -First 1) -eq $null} |
Tee-Object -FilePath "c:\temp\deleted.txt" -Append | Remove-Item
当您尝试使用Start Transcript时会发生什么情况?他们仍然需要将
-Verbose
添加到删除项
。否则,他们必须在循环中运行删除项
,并分别记录每次成功删除。Start-Transcript仅显示日期和命令操作应在的空白部分,据我所知,Start Transcript仅显示用户在控制台中键入的命令的操作。当您尝试使用Start Transcript时会发生什么情况?他们仍然需要将-Verbose
添加到删除项。否则,他们必须在循环中运行删除项
,并分别记录每次成功删除。Start-Transcript仅显示日期和命令操作应在的空白部分,据我所知,Start Transcript仅显示用户在控制台中键入的命令的操作。问题是,其中object
不给我任何输出,我无法在控制台上显示此cmdlet的任何结果、将其保存为字符串或将其任何内容写入文本文件。我想没有办法避免where object
,因为Get ChildItem
的filter
参数只对字符串有效。(我不熟悉Powershell脚本,所以我还不了解所有内容。)@error666-因此,将整个Where对象
替换为ForEach对象
,并将测试放在其中。一个IF将完成这项工作。[grin]然后将要删除的项目名称保存到日志文件中。最后,删除该文件。在ForEach Object
块中执行所有这些操作。问题是如果Object
不给我任何输出,我就无法在控制台上显示此cmdlet的任何结果、将其保存到字符串或将其任何内容写入文本文件。我想没有办法避免where object
,因为Get ChildItem
的filter
参数只对字符串有效。(我不熟悉Powershell脚本,所以我还不了解所有内容。)@error666-因此,将整个Where对象
替换为ForEach对象
,并将测试放在其中。一个IF将完成这项工作。[grin]然后将要删除的项目名称保存到日志文件中。最后,删除该文件。在ForEach对象
块中执行所有这些操作。