بازگشت به نخسه های پیشین آیتم های لیست به کمک پاورشل

خیلی وقت ها پیش می آید که شما بر اثر یک اشتباه مثلا یک ورکفلو بروزرسانی که اشتباها فعال شده است  نیاز دارید که تمام آیتم های یک لیست را به ورژن قبلی بازگردانید و نیز ورژن کنونی را حذف کنید، خب این اتفاق برای یکی از کاربرانی که من به آنها خدمات مشاوره می دم اتفاق افتاده بود و نیاز بود آیتم های لیستی با بیش از 4000 آیتم که بر اثر یک اشتباه غیر عمد آپدیت شده  بودن خیلی سریع به حالت قبل برگردند و اگر می خواستیم این کار را با رابط کاربری انجام بدیم زمان زیادی از ما می گرفت در نتیجه دست به کار شدم و کد پاورشل زیر را نوشتم برای بازگشت به نخسه های پیشین آیتم های لیست به کمک پاورشل :

$web = Get-SPWeb https://portal.example.com

$ListName = "نام لیست "
$VersionToRestore = 1
$List = $web.Lists["Performance Management"]
$ListItems = $List.items
foreach($Item in $ListItems)
{
"ItemID="+  $item.ID +" Restorelable="+$item.Versions[1].VersionLabel  +"Is Processing"
$item.Versions.RestoreByLabel($item.Versions[1].VersionLabel)
Write-Host "ItemRestored"  -ForegroundColor DarkGreen -BackgroundColor White
}

دقت داشته باشید که اگه عدد متغییر VersionToRestore را تغییر بدید می تونید به ورژن های قبلی هم بگردید مثلا اگر این عدد بشه 2 یعنی شما به دو ورژن قبل برمی گردید. برای حذف ورژن های جدید که بر اثر تغییر ناخواسته به وجود آمده است می تونید از کد زیر استفاده کنید

$web = Get-SPWeb https://portal.example.com

$ListName = "نام لیست "
$VersionToRestore = 1
$List = $web.Lists["Performance Management"]
$ListItems = $List.items
foreach($Item in $ListItems)
{
"ItemID="+  $item.ID +" Deleteing="+$item.Versions[1].VersionLabel  +"Is Processing"
$item.Versions[1].Recycle()
Write-Host "ItemVersionDeleted"  -ForegroundColor DarkGreen -BackgroundColor White
}

بازگشت به نخسه های پیشین آیتم های لیست به کمک پاورشل برای لیستی حدود 4000 آیتم  با این روش حدود 5 دقیقه طول کشید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *