我的文字文件包含一些共享路径(例如\\INTBMCELB\Abbott ADD HR Finance
或\\INTBMCELB\Abbott ADD HR Finance_VSS
等)
我读了这个文本文件中的所有路径以及每个路径中的文件夹
文件夹的详细信息从.csv
文件加载
目前,我在此size
文件中有一个名为.csv
的字段,我需要再添加一个名为“文件类别”的字段。
file category
字段应根据文件大小显示说明:
目前我正在做的事情:
$infile = 'C:\Users\417193\Desktop\MyShareBatch\SharePaths.txt'
$outdir = 'C:\Users\417193\Desktop\MyShareBatch\MyShareOuts'
foreach ($dir in (Get-Content $infile)) {
Get-ChildItem -Path $dir -Filter *.* -Recurse | Select-Object Name,
@{Name="Owner";Expression={(Get-ACL $_.fullname).Owner}},CreationTime,
@{Name="FileModifiedDate";Expression={$_.LastWriteTime}},
@{Name="FileAccessedDate";Expression={$_.LastAccessTime}},
@{Name="Attributes";Expression={$_.Attributes}},
@{l='ParentPath';e={Split-Path $_.FullName}},
@{Name="DormantFor(days)";Expression={[int]((Get-Date)-$_.LastWriteTime).TotalDays}},
@{N="FileCategory";E={Get-FileSizeCategory($_)}},
@{Name="Size";Expression={if($_.PSIsContainer -eq $True){(New-Object -com Scripting.FileSystemObject).GetFolder( $_.FullName).Size} else {$_.Length}}}
}
Function Get-FileSizeCategory($Object){
if( $Object.PSIsContainer )
{
$Length = (New-Object -ComObject Scripting.FileSystemObject).GetFolder($Object.FullName).Size
}
else
{
$Length = $_.Length
}
switch( $Length ) {
{$_ -le 10KB} {$Category="Tiny"; break}
{$_ -le 1MB} {$Category="Medium"; break}
{$_ -le 16MB} {$Category="Large"; break}
{$_ -le 128MB} {$Category="Huge"; break}
default {$Category="Gigantic"}
}
}
当我尝试从远程服务器执行上述脚本时,文件类别字段不会更新。我也尝试过使用本地服务器路径,但仍然存在同样的问题
在我的本地计算机上,脚本成功执行所有字段。我尝试删除导出到.csv
并打印输出,但问题仍然存在。
答案 0 :(得分:1)
尝试移动_Function Get-FileSizeCategory_
以下$outdir
以及foreach
之前的整个_Function Get-FileSizeCategory_
此外return $Category
没有返回任何内容,因此在结束括号上方添加Function Get-FileSizeCategory($Object){
......
default {$Category="Gigantic"}
}
return $Category
}
即:
{{1}}
应该这样做。