使用powershell从路径获取最新创建的文件夹

使用powershell从路径获取最新创建的文件夹,powershell,Powershell,如何使用Windows PowerShell从路径获取最新创建的文件夹 我有路径C:\temp,我想在此路径中查找最近创建的文件夹。PowerShell主要与管道一起工作,因此您将编写的大部分内容将包括创建表示某些信息的对象,并对其进行过滤和操作。在本例中,对象是一组文件夹 获取文件夹中的所有项目。这将获得文件和文件夹,这就是为什么第2步是必要的。行尾的|表示管道将在下一行继续–然后将通过Get ChildItem创建的对象逐个传递给另一个命令 Get-ChildItem c:\temp |

如何使用Windows PowerShell从路径获取最新创建的文件夹


我有路径
C:\temp
,我想在此路径中查找最近创建的文件夹。

PowerShell主要与管道一起工作,因此您将编写的大部分内容将包括创建表示某些信息的对象,并对其进行过滤和操作。在本例中,对象是一组文件夹

  • 获取文件夹中的所有项目。这将获得文件和文件夹,这就是为什么第2步是必要的。行尾的
    |
    表示管道将在下一行继续–然后将通过
    Get ChildItem
    创建的对象逐个传递给另一个命令

    Get-ChildItem c:\temp |
    
  • 筛选文件夹。遗憾的是,没有真正优雅的方式。不要担心它说的是“容器”,而不是“文件夹”——这些命令处理许多不同的东西,不仅仅是文件和文件夹,因此在命名时使用了一个更一般的概念

    Where { $_.PSIsContainer } |
    
  • 按日期按降序排序,因此最新文件夹是第一个文件夹

    Sort CreationTime -Descending |
    
  • 选择第一个(最新)文件夹

  • 简言之:

    gci c:\temp | ? { $_.PSIsContainer } | sort CreationTime -desc | select -f 1
    

    这两行都大量使用PowerShell中命令的默认别名,例如
    用于
    Where Object
    。不过,您应该在脚本中使用全名,因为您永远不知道代码可能在其他机器上运行时别名会是什么样子


    编辑:PowerShell 3具有用于
    Get ChildItem
    的附加参数,允许您直接对文件或文件夹进行筛选,因此您不需要
    Where

    Get-ChildItem -Directory C:\temp | ...
    

    通常,您将在PowerShell中使用对象及其属性。两个非常有用的命令是
    Get Member
    及其别名
    gm
    Get Command
    或just
    gcm
    <代码>获取成员将告诉您对象具有哪些属性和方法;您只需将其他内容导入其中即可:

    Get-ChildItem | gm
    
    将告诉您文件和目录的属性


    Get命令
    将列出存在的所有命令或与特定模式匹配的命令。PowerShell命令在动词和名词的使用上尽量保持一致。要查找以
    Object
    结尾的所有命令,您可以尝试使用
    gcm*-Object
    ——这些都是可以处理几乎所有内容的通用命令
    Get Help ForEach Object
    然后会告诉您一个特定的命令,
    ForEach Object
    在本例中。

    您是对的,他可能不知道基本知识。我只是在睡觉前快速回答了这个问题,没有时间详细回答。你在这里做到了-谢谢,干得好。向上投票。(对上一个问题下面的评论的反应)stej:好吧,这一个开始也是一个快速的回答。然后我对实际工作感到厌倦和拖延,结果变成了这样;-)
    Get-ChildItem -Directory C:\temp | ...
    
    Get-ChildItem | gm