Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu betik, bir dosya paylaşımını yanlışlıkla sildiyseniz geri yüklemenize yardımcı olur. Geçici silme ile silinen bir dosya paylaşımını 14 gün içinde geri yükleyebilir ve içeriğini, anlık görüntülerini ve kurtarma noktalarını kurtarabilirsiniz. Geçici silme hakkında daha fazla bilgi edinin.
Dosya paylaşımını silmeye yönelik örnek betik
#Import-Module Az.Storage -MinimumVersion 1.7.0 -Scope Local
Param(
[Parameter(Mandatory=$True)][System.String] $ResourceGroupName,
[Parameter(Mandatory=$True)][System.String] $StorageAccountName,
[Parameter(Mandatory=$True)][System.String] $FileShareName,
[Parameter(Mandatory=$True)][System.String] $SubscriptionId,
[Parameter(Mandatory=$False)][System.Boolean] $ListOption,
[Parameter(Mandatory=$False)][System.String] $DeletedShareVersion
)
Function Restore-DeletedFileShare
{
Param(
[Parameter(Mandatory=$True)][Microsoft.WindowsAzure.Commands.Common.Storage.LazyAzureStorageContext] $Context,
[Parameter(Mandatory=$True)][System.String] $FileShareName,
[Parameter(Mandatory=$False)][System.String] $DeletedShareVersion
)
if ([string]::IsNullOrWhiteSpace($FileShareName))
{
Write-Error "Please specify the required input parameter: FileShareName" -ErrorAction Stop
}
$FileShareName = $FileShareName.ToLowerInvariant()
Write-Verbose "Restoring a file share with the name: $FileShareName" -Verbose
Write-Information -MessageData "Started: Creating SASToken to List File Shares" -InformationAction Continue
$listToken = New-AzStorageAccountSASToken -Context $Context -Service File -ResourceType Service -Permission "l" -Protocol HttpsOrHttp -StartTime (Get-Date).AddHours(-1) -ExpiryTime (Get-Date).AddHours(1)
Write-Information -MessageData "Completed: Creating SASToken to List File Shares" -InformationAction Continue
Write-Information -MessageData "Started: Listing File Shares to find the deleted file share" -InformationAction Continue
$listSharesUrl = [string]::Concat($Context.FileEndPoint, "?include=metadata,deleted&comp=list&api-version=2019-10-10&", $listToken.Substring(1))
$listSharesResponse = Invoke-WebRequest $listSharesUrl -Method "GET" -Verbose
if ($listSharesResponse.StatusCode -ne 200)
{
Write-Error "Request to list file shares failed." -ErrorAction Stop
}
Write-Verbose $listSharesResponse.RawContent -Verbose
$listSharesResponseContent = $listSharesResponse.Content.Substring(3)
Write-Information -MessageData "Completed: Listing File Shares to find the deleted file share" -InformationAction Continue
Write-Information -MessageData "Started: Search for a deleted file share with the specified name" -InformationAction Continue
$deletedFileShares = Select-Xml -Content $listSharesResponseContent -XPath "/EnumerationResults/Shares/Share[Deleted=""true"" and Name=""$FileShareName""]"
$matchedCount = 0
$deletedShareVersions = New-Object System.Collections.Generic.List[string]
foreach($share in $deletedFileShares)
{
if($matchedCount -eq 0)
{
Write-Verbose $share.Node.InnerXml -Verbose
Write-Information -MessageData "Completed: Search for a deleted file share with the specified name And Found versions" -InformationAction Continue
}
$shareVer = $share.Node.Item("Version").InnerText
$shareDelTime = $share.Node.Item("Properties").Item("DeletedTime").InnerText
$retDays = $share.Node.Item("Properties").Item("RemainingRetentionDays").InnerText
$deletedShareVersions.Add($share.Node.Item("Version").InnerText)
Write-Information -MessageData "DeletedVersion: $shareVer, DeletedTime: $shareDelTime, RemainingRetentionDays: $retDays" -InformationAction Continue
$matchedCount++
}
if($ListOption -eq $True)
{
return;
}
if ($matchedCount -eq 0)
{
Write-Error "Deleted file share with the specified name was not found." -ErrorAction Stop
}
elseif($matchedCount -eq 1 -and ([string]::IsNullOrWhiteSpace($DeletedShareVersion) -or $deletedShareVersions.Contains($DeletedShareVersion)))
{
$DeletedShareVersion = $deletedShareVersions
}
elseif ($matchedCount -gt 1)
{
if ([string]::IsNullOrWhiteSpace($DeletedShareVersion) -or !$deletedShareVersions.Contains($DeletedShareVersion))
{
Write-Error "More than one share with the specified name was found. Please specify a valid DeletedShareVersion parameter from above possible values." -ErrorAction Stop
}
}
Write-Information -MessageData "Completed: Search for a deleted file share with the specified name And Found version: $DeletedShareVersion" -InformationAction Continue
Write-Information -MessageData "Started: Creating SASToken to Restore File Share" -InformationAction Continue
$restoreToken = New-AzStorageAccountSASToken -Context $Context -Service File -ResourceType Container -Permission "w" -Protocol HttpsOrHttp -StartTime (Get-Date).AddHours(-1) -ExpiryTime (Get-Date).AddHours(1)
Write-Information -MessageData "Completed: Creating SASToken to Restore File Share" -InformationAction Continue
Write-Information -MessageData "Started: Restore File Share" -InformationAction Continue
$restoreShareUrl = [string]::Concat($Context.FileEndPoint, $FileShareName, "?restype=share&comp=undelete&api-version=2019-10-10&", $restoreToken.Substring(1))
$restoreHeaders = @{"x-ms-deleted-share-name" = $FileShareName; "x-ms-deleted-share-version" = $DeletedShareVersion}
$restoreResponse = Invoke-WebRequest $restoreShareUrl -Headers $restoreHeaders -Method "PUT" -Verbose
if ($restoreResponse.StatusCode -ne 201)
{
Write-Error "Request to restore a file share failed." -ErrorAction Stop
}
Write-Verbose $restoreResponse.RawContent -Verbose
Write-Information -MessageData "Completed: Restore File Share" -InformationAction Continue
}
Connect-AzAccount
Select-AzSubscription -Subscription $SubscriptionId
$sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName
Restore-DeletedFileShare $sa.Context $FileShareName $DeletedShareVersion
Önkoşullar
Betiği çalıştırmadan önce aşağıdaki önkoşulların karşılandığından emin olun:
Betiği çalıştırmadan önce bu bağlantıdan en son Azure PowerShell Az modüllerini yükleyin.
Aşağıdaki ayrıntıları, betiğin farklı parametreleri için değer olarak geçirmeniz gerektiğinden elinizde bulundurun:
- -SubscriptionId - Dosya paylaşımının bulunduğu aboneliğin kimliği.
- -ResourceGroupName - Dosya paylaşımını barındıran Depolama Hesabının Kaynak Grubu.
- -StorageAccountName - Dosya paylaşımını barındıran depolama hesabının adı.
- -FileShareName - Silinecek dosya paylaşımının adı
Dosya paylaşımını geri yüklemek için betiği yürütün
Betiği aşağıdaki senaryolarda yürütebilirsiniz:
- Geri almaya çalıştığınız dosya paylaşımıyla aynı ada sahip birden çok silinmiş sürüm yok.
- Geri yüklemeye çalıştığınız paylaşılan dosya ile aynı ada sahip çok sayıda silinmiş sürüm mevcut.
Dosya paylaşımının kullanımdan kaldırılma betiğini yürütmek için şu adımları izleyin:
- Önceki betiği makinenize kendi seçtiğiniz bir adla kaydedin. Bu örnekte, Undelete.ps1 olarak kaydettik
- Betiği gereksinimlerinize uygun senaryoya göre çalıştırın.
Senaryo 1: Birden çok silinmiş sürüm yok
Geri almaya çalıştığınız dosya paylaşımıyla aynı ada sahip birden çok silinmiş sürüm yok.
Aşağıdaki örnek, afsshare depolama hesabında bulunan share1 dosya paylaşımını geri yükler.
.\UnDelete.ps1 -ResourceGroupName afsshare -StorageAccountName afsshare -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -FileShareName share1
Çıktıda ileti gösterilmelidir Completed:Restore File Share
Senaryo 2: Birden çok silinmiş sürüm
Geri almaya çalıştığınız dosya paylaşımıyla aynı ada sahip birden çok silinmiş sürüm var.
Betiği kaydettikten sonra, aşağıdaki adımları izleyerek dosya paylaşımı share1 sürümünü geri getirin.
Dosya paylaşımı adını sağlayarak betiği aşağıdaki gibi yürütebilirsiniz.
.\UnDelete.ps1 -ResourceGroupName afsshare -StorageAccountName afsshare -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -FileShareName share1Completed: Search for a deleted file share with the specified name and Found versions DeletedVersion: 01D5D7F77ACC7864, DeletedTime: Fri, 31 Jan 2020 05:30:33 GMT, RemainingRetentionDays: 14 DeletedVersion: 01D5D7F7A76CAF42, DeletedTime: Fri, 31 Jan 2020 05:31:25 GMT, RemainingRetentionDays: 14 Restore-DeletedFileShare : More than one share with the specified name was found. Please specify a valid DeletedShareVersion parameter from above possible values.1. adımın çıktısından geri almak istediğiniz sürümü seçin ve -DeletedShareVersion parametresi için bir değer olarak geçirin.
Aşağıdaki örnek, share1 dosya paylaşımının 01D5D7F77ACC7864 sürümünü geri yükler.
.\UnDelete.ps1 -ResourceGroupName afsshare-StorageAccountName afsshare -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -FileShareName share1 -DeletedShareVersion 01D5D7F77ACC7864