【问题标题】:Deleting log files that are buried with powershell删除被powershell掩埋的日志文件
【发布时间】:2016-09-10 09:42:16
【问题描述】:

所以我试图找出一个脚本来删除埋在许多文件夹中的日志文件。与结束文件夹相同的路径减去更改的客户端名称文件夹。下面是一个我认为可以正常工作的代码示例,但它失败了。任何建议将不胜感激。

gci X:\ -directory -recurse | ?{$_.FullName -match \\temp\\company\\.+?\\AppData\\logfiles -and $_.CreationTime -lt (get-date).AddDays(-20)}|Remove-Item -recurse -whatif

所以目录是 X,我要删除的日志文件的路径是 temp\company\NAME\appdata\logfiles,而 NAME 文件夹可以是任意数量的不同客户端名称之一。

我不断收到错误。

At line:1 char:51
+ gci X:\ -directory -recurse | ?{$_.FullName -match \\temp\\company\\.+?\\ ...
+                                                   ~
You must provide a value expression on the right-hand side of the '-match' operator.
At line:1 char:52
+ gci x:\ -directory -recurse | ?{$_.FullName -match \\Temp\\company\\.+?\\ ...
+                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token '\\Temp\\company\\.+?\\AppData\\logfiles' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

有没有人知道我们做错了什么或者如何实现这个目标?

提前致谢!

【问题讨论】:

  • 它是如何失败的?为什么您的正则表达式不在字符串引号中? gci x:\temp\company\*\appdata\logfiles\* | where { ... date test} 呢?
  • 我添加了我不断得到的错误
  • 然后把你的正则表达式放在字符串引号'\\temp\\company\\.+?\\AppData\\logfiles'
  • 不幸的是我已经尝试过了。

标签: powershell delete-file logfile


【解决方案1】:

错误是因为 -match 的第二个参数需要用引号引起来。

但是可能有一种方法可以做到这一点,而不需要您的示例的复杂性。 Get-ChildItem 可以采用 -Path 和 -Include(或 -Filter)参数。所以你可能会使用这样的东西:

Get-ChildItem -path c:\xxx -Include *log.tmp -Recurse | ... |  Remove-Item

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 2019-05-30
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2010-11-16
    • 2014-07-02
    • 1970-01-01
    相关资源
    最近更新 更多