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