我是Powershell的新手,需要一些幫助解決問題。我創建它返回與關於指南的相關信息的對象的函數:將兩個陣列與對象作爲值比較
DATE:2012年10月12日
COMPUTER:PC1
目錄:C:\ TEMP
FOLDERSIZE_IN_MB: 70
我循環瀏覽目錄以收集其大小信息並將其每週導出到CSV文件中。
這裏開始我的問題:
我想獲得有關Dir增長的一些信息。我開始編寫一個腳本,導入最舊和最新的CSV文件。
$data="C:\LOG\Data"
$data= gci -path $data -filter "*.csv"
$temp=""
$old,[email protected]()
foreach($item in $data){
If((Get-Date $item.LastWriteTime -format ("ddMMyyyy")) -gt $temp){
$new+= $item.FullName |Import-CSV -delimiter ";"
}
Elseif((Get-Date $item.LastWriteTime -format ("ddMMyyyy")) -lt $temp){
$old+= $item.FullName |Import-CSV -delimiter ";"
}
$temp=(Get-Date $item.LastWriteTime -format ("ddMMyyyy"))
}
我該如何比較兩個數組,以便在兩者中找到相同的目錄文件並用它們的大小進行調用?
我不知道如何檢查:
IF C:\ TEMP老和C:新\ TEMP然後callulate(1-(SIZEOLD/SITZENEW))* 100。
我會很高興地得到這樣的輸出:
日期:2012年10月12日
計算機:PC1
目錄:C:\ TEMP
FOLDERSIZE_IN_MB:80,5
GROWTH_SINCE_LAST_SCAN:15%
這就是我所做的解決我的問題,但我看起來不太穩定,我不知道如何將散列轉換回對象來將結果導入csv。
$舊= $舊|組對象項目 $新= $新|
$result1=compare $new $old -property Name -includeequal -passthru |WHERE {$_.Sideindicator -eq "=="}
$result2=compare $old $new -property Name -includeequal -passthru |WHERE {$_.Sideindicator -eq "=="}
for($i=0;$i -le $result1.count;$i++){
if($result1[$i].Name -contains $result2[$i].Name){
$Size2=($result2[$i].Group)| select-object -property FolderSize_in_MB
$Size1=($result1[$i].Group)| select-object -property FolderSize_in_MB
if(([int]$Size1.FolderSize_in_MB) -ne "0"){
$growth=(1-(([int]$Size2.FolderSize_in_MB)/([int]$Size1.FolderSize_in_MB)))*100
}
else{
$growth="0"
}
}
else{
}
if($result1[$i]){
$result1[$i].Group| ADD-Member NoteProperty Growth ("{0:n2}"-f $growth +"%")
}
}
試試這個 - http://technet.microsoft.com/en-us/library/ee156812。aspx –