1

我的路径中有 8 个文件夹..

我可以使用 foreach 将每个文件夹作为输入传递。

这 8 个文件夹中的每个文件夹中都有多个文件夹。

我需要进入 8 个文件夹中的每个文件夹中的至少四个文件夹,并且需要获取该文件夹中文件的最后写入时间,

这是示例代码

$ServerList = Get-Content "C:\Documents and Settings\a528602\Desktop\Tools\Store Server\Servers.txt" 

Foreach($ServerName in $ServerList) 
{ 
    get-childitem $ServerName 
    $numberoffolders=(get-childitem).count
    #irrespective number of folders in the each folder I need to pick any four folders and get the last written time stamp
    for(I=0;i<4;i++)
    {

        $folder1 = get-childitem $ServerName   Need to get any one folder
        $folder1_time = ?
    }
}

有人可以帮助编写powershell脚本。

4

2 回答 2

0

在你的 foreach 循环内使用:

Get-ChildItem -Path $_ -Directory | 排序对象 LastWriteTime -降序 | 选择 - 前 8

于 2013-09-23T05:27:19.637 回答
0

您可以将 to 的输出传递Get-ContentGet-Random -Count 4随机选择 4 个文件夹。

然后你只需要做另一个ForEach循环来浏览你选择的每个文件夹。Fullname您可以通过选择属性和来获取文件的全名和上次写入时间lastwritetime

从那里您将需要创建和排列以将数据从ForEach循环中取出,或者创建一个文件并将信息写入其中。如果您使用第二个选项,我建议export-csv您可以轻松添加要跟踪的字段,并将数据读出到以后随着需求的变化而变得更有意义的内容。

$ServerList = Get-Content "C:\Documents and Settings\a528602\Desktop\Tools\Store Server\Servers.txt" 

Foreach($ServerName in $ServerList) 
{ 
    $Folders = get-childitem $ServerName -Directory | Get-Random -Count 4 | select Fullname
    ForEach ($Folder in $Fodlers) 
    {
        $Files = Get-ChildItem $Folder | Select Fullname,lastwritetime
    }
}

编辑:添加了所用命令的链接。

于 2013-09-23T16:56:32.947 回答