所以我试图找出一个脚本来删除埋在许多文件夹中的日志文件。与结束文件夹相同的路径减去更改的客户端名称文件夹。下面是一个我认为可行的代码示例,它可能会失败。任何建议将不胜感激。
zeppelin:
container_name: "${DATARPM_ZEPPELIN_CONTAINER_NAME}"
image: "${DOCKER_REGISTRY}/zeppelin:${DATARPM_ZEPPELIN_TAG}"
network_mode: "${CONTAINER_NETWORK}"
mem_limit: "${DATARPM_ZEPPELIN_MEM_LIMIT}"
env_file: datarpm-etc.env
links:
- "xyz"
- "abc"
environment:
- "VOL1=${VOL1}"
- "constraint:node==${DATARPM_ZEPPELIN_HOST}"
volumes:
- "${VOL1}:${VOL1}:rw"
entrypoint: ["/bin/bash", "-c", '<some command here>']
所以目录是X,我要删除的日志文件的路径是gci X:\ -directory -recurse | ?{$_.FullName -match \\temp\\company\\.+?\\AppData\\logfiles -and $_.CreationTime -lt (get-date).AddDays(-20)}|Remove-Item -recurse -whatif
,NAME文件夹可以是任意数量的不同客户名称之一。
我一直在收到错误。
temp\company\NAME\appdata\logfiles
有没有人有任何想法我们做错了什么或如何实现这个目标?
提前致谢!
答案 0 :(得分:0)
错误是因为-match的第二个参数需要在引号中。
但是可能有一种方法可以做到这一点而不需要你的例子的复杂性。 Get-ChildItem可以同时使用-Path和-Include(或-Filter)参数。所以你可以使用这样的东西:
Get-ChildItem -path c:\xxx -Include *log.tmp -Recurse | ... | Remove-Item