İçerik Arama Tarafından Bulunan OneDrive Dosyalarını Kaldırmak için PowerShell Nasıl Kullanılır
Son zamanlarda bazı İçerik Aramaları üzerinde çalışırken, aramalarda bulunan OneDrive belgelerinin seçici olarak silinmesinin nasıl yapılacağına dair bir soru ortaya çıktı. İçerik arama eylemini kullanarak e-postayı kaldırabilirsiniz ancak Office 365, içerik aramalarında bulunan OneDrive belgelerini temizlemeye yönelik bir yöntem içermez.
Soru, içerik aramasında bulunan OneDrive belgelerinin tamamının olmasa da bir kısmının nasıl kaldırılacağıdır. Bu makalede, dosya kümesini görüntülemek ve ardından kaldırılacak dosyaları seçmek için PowerShell'in nasıl kullanılacağı gösterilmektedir.
Koşullu Erişim (CA) politikalarını yönetmek için PowerShell'i nasıl kullanabileceğinizi merak mı ediyorsunuz? Damian bu makaledeki sekiz cmdlet'i inceliyor.
Temel İçerik Arama
Öncelikle İçerik Araması yapmamız gerekiyor. Microsoft 365 Uyumluluk Merkezi'nde İçerik arama bölümüne gidin ve yeni bir arama oluşturun. Arama için anahtar kelime olarak “Exchange”i girin ve hedef OneDrive arama konumlarını seçin. Arama başlar ve sonuçların önizleme kümesini oluşturur. Arama konumlarının sayısına bağlı olarak bu işlemin tamamlanması biraz zaman alabilir.
Arama tamamlandıktan sonra önizleme sonuçlarını inceleyebiliriz. Aramanın doğru öğeleri bulduğundan memnun olduğunuzda, 'Raporu Dışa Aktar'ı seçerek sonuçların bir raporunu oluşturun:
Rapor dışa aktarıldıktan sonra oluşturulan CSV dosyasını indirebiliriz:
Raporun indirilmesi, arama ayrıntılarından kopyalanıp Microsoft Export yardımcı programına yapıştırılabilen bir anahtar (Şekil 3) gerektirir:
Artık arama tamamlandı ve rapor indirildi, hangi OneDrive dosyalarının silineceğini belirlemek için bu CSV dosyasını kullanabiliriz.
Bulguları İnceleme ve OneDrive'ı Seçmeli Kaldırma
Bir sonraki görev, CSV dosyasındaki dışa aktarma verilerini kullanılabilir bir şekilde sunmaktır. Bunu yapmak için, dosyaları kullanıcının OneDrive adresine göre gruplandırmak ve gözden geçiren kişinin kaldırılmak üzere dosyalardan birini, bazılarını, tümünü veya hiçbirini seçmesine izin vermek için PowerShell'i kullanırız. Bu görevleri yürütmek için gereken izinlerle OneDrive dosya işlemlerini gerçekleştirmek için SharePoint Online ve PNP PowerShell modüllerindeki cmdlet'leri kullanıyoruz. Komut dosyasının tamamını buradan GitHub'dan indirebilirsiniz. Şimdi bazı önemli kısımları vurgulayacağım.
CSV Dosyası
İndirdiğimiz CSV dosyamız aşağıda gösterilen formattadır:
Genel Komut Dosyası Süreci
Dışa aktarma dosyası sıralanmamış veya kullanabileceğimiz bir formatta değil, bu nedenle daha kullanışlı bir şey oluşturmak için önce verileri işlememiz gerekiyor. Aşağıdaki kodda CSV dosya adını soruyoruz, girdi dosyasından anahtar öğeleri (Kullanıcı ve Dosya) çekiyoruz ve bu verileri $Table adlı bir değişkende saklıyoruz. Son olarak, $Table değişkenini Kullanıcıya göre sıralayın ve sonuçları $SortedResults adlı bir değişkende saklayın:
$CSVName = Read-Host "Please specify a CSV file to import [i.e. Results.csv]"
$CSV = Import-Csv $CSVName
$Table = Foreach ($Line in $CSV) {
$User = $Line.Location
$FullFilePath = $Line."Original Path"
$Type = $Line.Type
$File = $FullFilePath.Split('/')[-1]
New-Object -TypeName PSCustomObject -Property @{
User = $User
File = $File
}
}
$SortedResults = $Table | Sort-Object User,File
SharePoint Online'a bağlanın
Artık elimizde iyi veriler olduğuna göre SharePoint Online'a bağlanabiliriz. SharePoint Online yönetici uç noktasına bağlanmak için doğru kiracı adını kullandığınızdan emin olun (parantez içinde - kodun ilk satırı):
$SharePointURL = 'https://<tenant domain>-admin.sharepoint.com'
$GAUPN = Read-Host "Please enter your Global Admin account UPN"
$Password = Read-Host -assecurestring "Please password for Global Admin account specified above"
$Credentials = New-Object -typeName System.Management.Automation.PSCredential -argumentlist $GAUPN, $Password
Connect-SPOService -Url $SharePointURL -Credential $Credentials
Bağlandıktan sonra CSV dosyasını işlemeye başlayabiliriz. Dosyadaki öğeler arasında dolaşırken verileri işlemek için bazı kurallar kullanırız. Birincisi, döngü bir foreach döngüsüdür; burada her satır ayrı ayrı okunur ve her döngü içinde eylemler gerçekleştirilir. Genel olarak, komut dosyasında çalıştıracağımız adımlar şunlardır:
- Foreach döngüsü, tek bir kullanıcının her satırını bir değişkende gruplandırır.
- Komut dosyasının görevlerini gerçekleştirmesi için komut dosyası operatörüne (Site Koleksiyonu Yöneticisi) izinler verilir.
- İzin verildikten sonra kullanıcının OneDrive hesabına bağlantı kurulur.
- Bağlanırken, dosyanın kimliği sorgulanır ve kaldırılacak dosyayı tanımlamak için gerekli olduğu için saklanır.
- Bir kullanıcı değişikliği algılandığında geçerli dosya listesi şu adımları uygular.
a. Adım 1 - Dosyaları Out-GridView ile görüntüleyin
b. Adım 2 - Dosyaları kaldırmaya başlamak için Out-GridView çıktısını kullanın.
c. Adım 3 - Operatörün dosyayı silmemesine izin verin (emin misiniz? seçeneği) - Bir kullanıcının dosyaları işlendikten sonra Foreach döngüsü bir sonraki kullanıcıya geçer
- 1-6 arası adımlar son kullanıcı tespit edilene kadar devam eder (CSV dosyasının son satırı)
- Senaryo çıkar.
Bir Kullanıcının OneDrive'ına Erişme
Bir kullanıcının OneDrive hesabındaki dosyaları kaldırmak için doğrudan kullanıcının OneDrive URL'sine (CSV dosyasında) bağlanmamız gerekir. Bağlandıktan sonra site koleksiyonu yönetici izni veriyoruz. Bu iki görev aşağıdaki komut dosyasıyla tamamlanabilir:
Connect-PnPOnline -Url $UserOneDrive -Credentials $Credentials
Set-SPOUser -Site $UserOneDrive -LoginName $GAUPN -IsSiteCollectionAdmin $TrueOut-GridView ve Remove-PnPItemListItem
Yukarıda listelenen genel sürecin 5. adımı için, dosyaları operatöre görüntülememiz, seçilen dosyaları saklamamız ve ardından kullanıcının dosya hakkında karar vermesine izin vermemiz gerekir. kaldırma. İlk olarak dosyayı Out-GridView kullanarak görüntülüyoruz:
$FilesToRemove = $RemovalList | Out-GridView -PassThru
• $FilesToRemove: (bir rutin?) operatör tarafından seçilen tüm dosyaları saklar.
• $RemovalList: CSV'deki tüm dosyaların orijinal listesi
• -PassThru: Bu seçenek, Out-GridView cmdlet'inden seçilen seçenekler, daha sonra $FilesToRemove değişkeninde saklanacaktır.
Dosyalar seçildikten sonra her biri listelenir ve operatör dosyanın kaldırılıp kaldırılmayacağını seçebilir:
Write-Host "Removing $File from $User with ID of $SubID ..." -ForegroundColor Yellow
$ConfirmRemoval = Read-Host " Confirm file removal [y or n] "
If ($ConfirmRemoval -eq 'y') {
Remove-PnPListItem -List Documents -Identity $SubID
} Else {
Write-Host " *** FILE WAS NOT DELETED **" -ForegroundColor Yellow
}
Operatör Görünümü
Bazı önemli kod bölümlerini incelediğimize göre, dosya kaldırmaya ilişkin genel süreci inceleyelim. CSV dosyasını indirip içeriğini işledikten sonra, bunu dosyaları kaldırmak için temel olarak kullanabiliriz. Betiği çalıştırdığımızda ilk yaptığımız şey hedef kiracıya bağlanmaktır. Aramadan indirdiğimiz sonuç CSV dosyası da bizden isteniyor. Daha sonra komut dosyası, Out-GridView cmdlet'i kullanılarak incelenecek ve/veya kaldırılacak dosyaları gösterir:
Bazı dosyaları seçtikten sonra dosyaları kaldırmaya veya kaldırmamaya karar verebiliriz, aşağıda bazı örnekler verilmiştir:
Önkoşullar
Komut dosyasını çalıştırmadan önce, OAuth kimlik doğrulamasını kullandığından PnP PowerShell Modülünün kullanımına izin vermeniz gerekir. Uygulamaya izin vermezsek şuna benzer bir hata görüntülenecektir:
Connect-PnPOnline : AADSTS65001: The user or administrator has not consented to use the application with ID
'31359c7f-bd7e-475c-86db-fdb8c937548e' named 'PnP Management Shell'. Send an interactive authorization request for this user and resource.
PnP Modülünü kullanmak için şu adımları izlememiz gerekiyor:
$URL = 'https://<tenant>-my.sharepoint.com/personal/user_yourdomain_com'
Connect-PnPOnline -Url $Url -PnPManagementShell
Bu cmdlet'leri çalıştırdığınızda, https://microsoft.com/devicelogin adresine girilecek tek seferlik bir şifre görüntülenecektir. Daha sonra izin verme haklarına sahip bir hesaba girip seçebiliriz:
Daha sonra cmdlet'ler için onayı onaylamamız gerekecek:
Geniş izin listesi, PNP modülünün bir kiracıdaki Teams'den SharePoint'e ve Planner ve Flow da dahil olmak üzere çeşitli iş yüklerine erişmesi gerekeceğinden kaynaklanmaktadır. Bu nedenle modülün çalışması için geniş bir izin dizisine ihtiyacı olacaktır. Bu iznin yalnızca modülün kiracıda kullanılmasına izin verdiğini ve kullanımının kısıtlanabileceğini unutmayın.
Onay verdikten sonra OneDrive'a bağlanmak ve dosyaları yönetmek için PnP Modülünü kullanabiliriz.
Neden PNP Yönetim kabuğu?
PNP Yönetim Kabuğu, OneDrive hesaplarında depolanan dosyaları yönetme yeteneği de dahil olmak üzere SharePoint Online nesnelerine erişime olanak tanıyan 500'den fazla PowerShell cmdlet'inden oluşan güçlü bir settir. Clear-PnPListItemAsRecord cmdlet'ini kullanarak Kayıt Etiketini de kaldırabiliriz. Bu eylem, SharePoint kitaplığında bir öğeyi seçmenin ve SharePoint Online'da bulunan 'Kayıtı Geri Al' seçeneğini seçmenin PowerShell sürümüdür.
Denetim
Genel izleme perspektifinden bakıldığında, SharePoint Online, Office 365 Denetim Günlüğündeki komut dosyası tarafından kaldırılan tüm dosyaların ayrıntılarını yakalar. 'Silinmiş Dosya'yı arayın; silinen dosya(lar)ın ayrıntıları günlükte görünecektir.
Çözüm
Burada açıklanan komut dosyası, içerik araması için rapor verilerinin alınması ve belge silme sürecini yönlendirmek için kullanılması gibi sıkıcı sürecin üstesinden gelmek üzere tasarlanmıştır. Şu anda Microsoft 365 Uyumluluk Merkezi'nde eşdeğeri bulunmamaktadır. Komut dosyasını çalıştırmak için Exchange Online'dan (uyumluluk uç noktasına bağlı), SharePoint Online'dan ve PnP modüllerinden cmdlet'lere ihtiyacınız vardır. Son olarak, bir yöneticinin kiracıda SharePoint PnP Modülü cmdlet'lerini kullanmak için izin vermesi gerekir. Bu komut dosyasıyla çalışmadan önce tüm bu koşulların karşılanması gerekir.
Örnek Kod
Bu çözüme yönelik kendi kodunuzu oluşturmanıza yardımcı olmak amacıyla bu çözüme ilişkin işlemin örnek kodu GitHub'da yayınlanmıştır.
Bu kodu, yalnızca bunların sonuçlarını anlayan kişiler tarafından yapılması gereken çeşitli görevleri yerine getirdiği için dikkatli kullanın:
- Kiracınıza PNP Management Shell'e erişim izni verin
- Kullanıcının OneDrive'ından dosyaları kaldıran Remove-PnPListItem'in kullanımı
- Bir kullanıcının OneDrive'ına SiteCollectionAdmin izinlerinin verilmesi







