Powershell Get-ChildItem不会为文件夹返回任何内容

时间:2020-06-26 14:20:25

标签: powershell directory path get-childitem shared-directory

我的一个朋友要我为他写一个简短的剧本。该脚本应检查特定的文件夹,查找所有早于X天的文件和子文件夹并将其删除。到目前为止,我很简单,编写了脚本,并在自己的系统上成功对其进行了测试,然后将其发送给他。这是东西-在他的系统上不起作用。更具体地说,Get-ChildItem cmdlet不会为提供的路径返回任何内容,但以后会变得更加奇怪。我正在使用以下代码首先找到文件和文件夹(并先记录它们,然后再删除它们):

$Folder = "D:\Data\Drive_B$\General\ExchangeFolder"

$CurrentDate = Get-Date
$TimeSpan = "-1"
$DatetoDelete = $CurrentDate.AddDays($TimeSpan)    

$FilesInFolder = (Get-ChildItem -Path $Folder -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -lt $DatetoDelete})

所有变量都已填充,并且我们都知道该文件夹已充满了一天以上的文件和子文件夹,这是我们为测试选择的时间跨度。现在,有趣的部分是,不仅Get-ChildItem不会返回任何内容-转到文件夹本身并键入“ dir”也不会返回任何内容。从来没有见过这样的行为。我检查了所有我想到的内容-是DFS,错别字,文件夹权限,共享权限,隐藏文件,ExecutionPolicy。一切都是为了使该脚本能够像最初测试该脚本一样在我自己的系统上正常运行。该脚本不会返回任何错误。

因此由于某种原因,powershell无法找到该文件夹​​的内容。有人知道为什么会发生这种情况吗?我在这里不知所措:-/

感谢您的时间和帮助,

弗雷德

1 个答案:

答案 0 :(得分:0)

.AddDays()占了我的两倍。

先过滤再执行

此代码将为您服务。

$folder = Read-Host -Prompt 'File path'

$datetodel = (Get-Date).AddDays(-1)
$results = try{ gci -path $folder -Recurse  | select FullName, LastWriteTime | ?{ $_.LastWriteTime -lt $datetodel}}catch{ $Error[-1] }
$info = "{0} files older than: {1} deleting ...." -f $results.count, $datetodel

if($results | ogv -PassThru){
    [System.Windows.Forms.MessageBox]::Show($info)
    #Put you code here for the removal of the files
    # $results | % del FullName -force
}else{
    [System.Windows.Forms.MessageBox]::Show("Exiting")
}