PowerShell ile Kullanıcıların Ev Sürücülerini OneDrive İş'e Taşıma
Neredeyse 3 yıldır Office 365'e sahibiz ve yapılacaklar listemdeki şeylerden biri de kullanıcıların ana klasörlerini OneDrive İş'e taşımaktı. Geçen sene bunu denedim, herkesten dosyaları kopyalamasını veya taşımasını istedim ama bu planlandığı gibi olmadı.
Bu sefer taktiklerimi değiştirmek zorunda kaldım, açıkçası kullanıcılar (150+) dosyaları kendileri taşımayacaklardı. Artık OneDrive'ın Bilinen Klasörleri (Masaüstü, Belgeler ve Resimler) taşıma yeteneğine sahip olduğunu biliyorum, ancak bunlar dosya sunucusunda depolanan kişisel dosyalar değil. Bu yüzden dosyaları taşımak için PowerShell kullanacağız.
Sunucu depolama alanı pahalıdır; bu nedenle, her kullanıcı bulutta sınırsız depolama alanına sahipken ana klasörler için depolama alanı satın almak para israfıdır. Kullanıcılar için bir diğer avantaj da elbette dosyalarına her yerden ulaşabiliyor olmaları.
Ana klasör taşıma işlemi hazırlanıyor
Dosyaları taşımadan önce bazı şeyleri hazırlamamız gerekiyor. Yapılandırabileceğimiz bazı GPO ayarları var, OneDrive yönetici ayarlarını gözden geçirmeliyiz, kullanıcılarımızı bilgilendirmemiz gerekiyor ve scripti dağıtmamız gerekiyor.
Başka bir olası sorun da geçersiz dosya adları veya uzun yollardır. Tıpkı SharePoint'in OneDrive İş'te olduğu gibi bazı dosya sınırlamaları vardır:
- Geçersiz dosya veya klasör adları
- Geçersiz karakterler ( ” * : < > ?/\ |)
- Maksimum 15 Gb dosya boyutu
- 400 karakter yol sınırı
Sınırlamaların tam listesini buradan okuyun.
OneDrive İş Yönetim Merkezini Kontrol Etme
Bu tür geçişleri gerçekleştirmeden önce Office 365 Yönetim Merkezi'ni kontrol etmek her zaman iyidir. Düzenli olarak yeni ayarlar eklenmektedir ve örneğin OneDrive İş için paylaşım seçeneklerini sınırlamak isteyebilirsiniz.
Ayarların iş güvenliği politikalarınıza uygun olduğundan emin olun.
OneDrive İş Bilinen Klasör Taşıma
Bilinen klasörleri (Masaüstü, Belgeler ve Resimler) OneDrive'a taşımak gerçekten etkinleştirmeniz gereken bir şeydir. Kurulumu için yalnızca iki GPO ayarı gerekir ve kendi kendine kullanıma sunulur. Kullanıcılarınız dosyaları her zamanki gibi çalıştırabilir ve depolayabilir, ancak dosyalar bulutta güvenli bir şekilde yedeklenir.
Tam bir Citrix ortamından bağımsız bir ortama geçtiğimizde endişelerimden biri kullanıcının verilerini güvende tutmaktı. Elbette işle ilgili dosyaları ağ sürücülerinde ve şimdi de SharePoint'te saklıyorlar. Ancak hepimiz kullanıcıların işle ilgili dosyaları masaüstünde tutmayı sevdiklerini veya bunları bilmeden belgeler klasörüne kaydedebileceklerini biliyoruz.
Ve evet, kullanıcılarımızı eğitmemiz gerekiyor, ancak bilinen klasörleri ayarlayarak endişelenecek bir sorunumuz azalıyor.
Office 365 Kiracı Kimliğinizi alın
GPO'ları yapılandırmadan önce kiracı kimliğimizi almamız gerekiyor. PowerShell ile bunu yalnızca bir komutla alabiliriz:
# Connect to the Azure AD
connect-azuread
# result:
Account Environment Tenant
------- ----------- ------
johndoe@lazyadmin.nl AzureCloud <your tenant ID>
# Optional - Get your tenant details
get-azureadtenantdetailAzure AD'ye başarıyla bağlandıktan sonra sonuçlarda Kiracı Kimliğini göreceksiniz. Anlamazsanız her zaman Get-AzureAdTenantDetail cmdlet'ini kullanabilirsiniz; burada nesne kimliği kiracı kimliğinizdir.
GPO'ları yapılandırma
Yapılandırmamız gereken birkaç GPO var. Bu GPO'yu kuruluşunuzun tamamı için aynı anda etkinleştirirseniz, OneDrive senkronizasyonu nedeniyle ağ trafiğinde büyük bir artış yaşayacağınızı unutmayın. Dolayısıyla GPO'yu hedeflemek için geçici bir güvenlik grubu kullanmak isteyebilirsiniz.
Yeni bir GPO oluşturun ve aşağıdaki politikalara gidin:
Computer configuration\Policies\Administrative Templates\OneDrive
OneDrive Grup İlkelerini bulamıyorsanız öncelikle adml ve admx dosyalarını kopyalamanız gerekebilir:
- .adml ve .admx dosyasını bir iş istasyonundaki %localappdata%\Microsoft\OneDrive\BuildNumber\adm\ dizininden kopyalayın
- .admx dosyasını etki alanı denetleyicisinin merkezi deposuna yapıştırın: \\domain\sysvol\domain\Policies\PolicyDefinitions
- .adml dosyasını merkezi depodaki doğru dil klasörüne yapıştırın
Henüz yapmadıysanız, öncelikleBirincil Windows hesabını kullanarak OneDrive'ı sessizce yapılandırma politikasını etkinleştirin. Bu, kullanıcıya OneDrive'ı ilk kez kurduğunda ekstra oturum açma bilgisi kazandıracaktır.
Ayrıca yükleme bant genişliğini sınırladığınızdan emin olun; böylece bir kullanıcı tüm internet bağlantısını yavaşlatamaz. OneDrive.exe'nin kullandığı maksimum yükleme bant genişliği yüzdesini ayarla politikasını 70 gibi bir değere ayarlayın.
Bilinen klasörü taşımak için Bilinen Windows klasörünü OneDrive'a sessizce yeniden yönlendir ilkesini etkinleştirin ve kiracı kimliğini girin. İsterseniz kullanıcı bildirimini etkinleştirebilirsiniz.
Eski OneDrive istemcilerini desteklemek için Kullanıcıdan Bilinen Windows klasörünü OneDrive'a taşımasını iste ilkesinin etkinleştirilmesi de önerilir.
Kullanıcıların ana klasörünü taşıma
Yapmayı planladığımız son adım, kullanıcının ana klasör verilerini OneDrive İş hesabına taşımaktır. Benim durumumda dosyalar dosya sunucularında saklanıyor. Yani her kullanıcının kendi klasörüne eşlenmiş bir ağ sürücüsü vardır.
PowerShell betiğimizde ele almamız gereken birkaç şey, kullanıcıların OneDrive klasörünü bulmak, bağlı olup olmadığını kontrol etmek ve kopyalandığını bilmemiz için ana klasörün arkasında bir gösterge bırakmaktır. Dosyaları taşımayacağız, sadece kopyalayın. Dosyaları daha sonra arşiv sunucumuza taşımayı planlıyorum, böylece her zaman bir yedeğimiz olur.
PowerShell ve OneDrive
OneDrive'ın bağlı olup olmadığını kontrol etmek için OneDrive durumunu okumak üzere bir DLL dosyasını içe aktarmamız gerekir. Bu GitHub deposundan OneDriveLib.dll dosyasını indirin. Bunu her kullanıcının erişebileceği bir konuma yerleştirin; netlogon'u öneririm ancak diğer ağ paylaşımları da işe yarayabilir.
Öncelikle DLL dosyasını içe aktarıyoruz:
Import-Module \\contoso.local\netlogon\OnedriveLib.dll
Daha sonra, kullanıcıların OneDrive klasörünün yolunu bulmamız gerekiyor. Bu klasörün varsayılan konumu kullanıcı profili klasörüdür. Birden fazla OneDrive klasörünüz varsa USERPROFILE değişkenini kullanabilirsiniz, aksi takdirde OneDriveCommercial değişkenini kullanmanızı öneririm.
#Find OneDrive folder
$path = $env:OneDriveCommercial
# Alternative:
# $path = $env:USERPROFILE + '\OneDrive - LazyAdmin'Doğru klasöre sahip olup olmadığımızı ve OneDrive'ın bağlı olup olmadığını kontrol etmek için OneDrive durumunu alabiliriz:
#Get OneDrive status
$ODStatus = Get-ODStatus -ByPath $path
# or in short:
$ODStatus = Get-ODStatus -ByPath $env:OneDriveCommercialBağlıysa 'UpToDate' veya 'Syncing' değerini döndürür. Bu yüzden sonucu kontrol ediyoruz ve dosyaları kopyalamak için robocopy kullanıyoruz.
if ($ODStatus -eq 'UpToDate' -or $ODStatus -eq 'Syncing') {
#OneDrive is connected
write-host 'OneDrive connected and found'
robocopy $env:HOMESHARE $env:OneDriveCommercial /E /SEC
new-item $env:HOMESHARE -name '_FILES COPIED TO ONEDRIVE.txt' -ItemType 'file' -Value 'Files Copied'
}Son satırda görebileceğiniz gibi yeni bir öğe, bir metin dosyası oluşturuyoruz. Daha sonra, arşivlemeden önce her ev sürücüsü klasörünü taşıyıp taşımadığımızı kontrol etmek için bir PowerShell betiği çalıştırıyoruz.
Çözüm
PowerShell'i oturum açmış kullanıcının bağlam modunda çalıştırın; bunun için PDQ Dağıtımını, bir GPO'yu (oturum açma komut dosyası) veya SCCM'yi kullanabilirsiniz. Çok sayıda kullanıcınız varsa ağınızdaki etkiyi sınırlamak için dağıtımı yaydığınızdan emin olun.
PowerShell ile mevcut ortam değişkenlerini kontrol ettiğinizden emin olun. Bu betiği oluşturmaya yönelik ilk denememde, kullanıcının ana klasörünün sürücü harfini kullanmayı denedim. Bu işe yaramadı. Bir alternatif ararken, sürücü harfini döndüren $env:HomeDrive'ı veya gerçek yolu döndüren $env:HomeShare'i kullanabileceğimizi fark ettim.
