0
我有文本文件,其中包含一些共享路径(例如\\INTBMCELB\Abbott ADD HR Finance
或\\INTBMCELB\Abbott ADD HR Finance_VSS
等)。
我从这个文本文件和每个路径中的文件夹中读取所有路径。
文件夹的详细信息从.csv
文件加载。
目前我在这个.csv
文件中有一个名为size
的字段,我需要添加一个名为'文件类别'的字段。Powershell导出到csv
的file category
字段应显示基于它的文件的大小的描述:
- 微小(0 KB - 10 KB)
- 小(10 KB - 100 KB)
- 介质(100 KB - 1 MB)
- 大(1 MB - 16MB)
- 巨大(16 MB - 128 MB)
- 巨型(> 128 MB)
目前,这是我在做什么:
$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
并打印输出,但问题仍然存在。
你如何从远程服务器执行它? – Raf