Saya sangat baru mengenal PowerShell, dan saya berharap saya bisa mendapatkan bantuan untuk membuat skrip yang memberi tahu saya tanggal modifikasi file.
Saya berharap saya tahu lebih banyak tentang PowerShell, karena saya merasa saya banyak bertanya (semua waktu luang saya minggu ini akan didedikasikan untuk mempelajari PowerShell lebih baik). Menunjuk saya ke arah di mana saya bisa belajar bagaimana melakukan ini akan sangat membantu juga.
Berikut ini adalah ikhtisar lengkapnya. Saya perlu menjalankan laporan setiap hari yang memeriksa daftar komputer di 90 toko yang berbeda untuk memastikan pencadangan tertentu telah dilakukan. Tanggal yang dimodifikasi harus memberi tahu apakah pencadangan telah dilakukan, dan akan disetel ke tanggal sebelumnya.
Jika tanggal modifikasi adalah kemarin, maka tidak perlu ada output. Jika bukan kemarin, saya ingin memiliki output di jendela PowerShell, atau ke file teks, mana saja yang lebih mudah.
Saya juga harus memeriksa bahwa folder tidak lebih dari tujuh hari untuk masing-masing dari 90 toko, dengan kriteria yang sama untuk output. Ide yang saya miliki akan seperti ini untuk setiap toko
Untuk Toko 1:
Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
then do nothing
if date does not equal yesterday
then output "Test did not backup"
check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
then do nothign
if date equals >7 days old
then output "test did not backup"
Maaf karena tidak membuktikan usaha penelitian saya, saya sangat baru mengenal Powershell dan saya berada dalam tenggat waktu untuk menyelesaikan ini. Sejak kemarin, saya telah belajar bagaimana melakukan semua yang perlu saya lakukan dengan skrip ini. Terima kasih kepada @Keith yang telah mengarahkan saya ke jalan yang benar. Saya akhirnya menggunakan kode berikut ini untuk mencapai tujuan saya yaitu hanya mengeluarkan lokasi di mana hasilnya salah.
$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}
$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
Jika Anda menjalankan perintah Get-Item atau Get-ChildItem, ini akan menghasilkan objek System.IO.FileInfo dan System.IO.DirectoryInfo yang berisi informasi ini, mis:
Get-Item c:\folder | Format-List
Atau Anda bisa mengakses properti secara langsung seperti ini:
Get-Item c:\folder | Foreach {$_.LastWriteTime}
Untuk mulai memfilter folder & file berdasarkan waktu penulisan terakhir, Anda dapat melakukan ini:
Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
Inilah yang berhasil bagi saya:
$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
#Im using the -gt switch instead of -ge
{}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}
$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)))}
{}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
Kode PowerShell untuk menemukan semua file pustaka dokumen yang dimodifikasi dari 2 hari terakhir.
$web = Get-SPWeb -Identity http://siteName:9090/
$list = $web.GetList("http://siteName:9090/Style Library/")
$folderquery = New-Object Microsoft.SharePoint.SPQuery
$foldercamlQuery =
'<Where> <Eq>
<FieldRef Name="ContentType" /> <Value Type="text">Folder</Value>
</Eq> </Where>'
$folderquery.Query = $foldercamlQuery
$folders = $list.GetItems($folderquery)
foreach($folderItem in $folders)
{
$folder = $folderItem.Folder
if($folder.ItemCount -gt 0){
Write-Host " find Item count " $folder.ItemCount
$oldest = $null
$files = $folder.Files
$date = (Get-Date).AddDays(-2).ToString(“MM/dd/yyyy”)
foreach ($file in $files){
if($file.Item["Modified"]-Ge $date)
{
Write-Host "Last 2 days modified folder name:" $folder " File Name: " $file.Item["Name"] " Date of midified: " $file.Item["Modified"]
}
}
}
else
{
Write-Warning "$folder['Name'] is empty"
}
}