首页 > 解决方案 > powershell 脚本自动删除 x 天前的文件。在其中传递两个参数,一个用于文件路径,另一个用于否。保留文件的天数

问题描述

我想编写一个用于使用记事本自动删除文件夹的 PowerShell 脚本,并且我还想向该脚本添加 2 个参数。每当我运行此脚本时,它都会询问路径和否。天旧文件。

Param1 - location of the folder
Param2 - no. Of days to keep

$param1 = Read-Host -Prompt 'location of the folder'
$param2 = Read-Host -Prompt 'no. of days to keep'
Get-ChildItem $param1 -recurse  | 
    Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays($param2)} | 
    Remove-Item

是否有任何解决方案可以在 PowerShell 脚本中传递参数?在我的代码中 param1 正在接受输入,但 param2 没有接受任何输入。

标签: windowspowershellparameter-passingpowershell-2.0powershell-3.0

解决方案


首先 - 请正确命名您的参数 - 它更容易阅读。:)

第二 - 如果你想要比 x 更老 - 你必须这样做.AddDays(-$days)

所以它可能看起来像这样:

$path = Read-Host -Prompt 'location of the folder'
$days = Read-Host -Prompt 'no. of days to keep'
Get-ChildItem $path -Recurse  | 
    #Mind the -$days (so we are looking for older than (today - X days)
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } | 
    Remove-Item #-WhatIf #for testing

推荐阅读