معرفی
اغلب اوقات، بهعنوان مدیر آنلاین شیرپوینت، باید گزارشی از تمام سایتهای هاب و سایتهای مرتبط با آنها یا تمام سایتهای مرتبط برای یک سایت مرکزی خاص ایجاد کنیم. پرداختن به این موضوع به صورت دستی بسیار زمان بر است و هیچ صفحه نمایش مستقیمی وجود ندارد که بتواند این موضوع را ایجاد کند. در اینجا در این مقاله، خواهیم دید که چگونه میتوانیم با استفاده از PnP Powershell، تمام سایتهای هاب و تمام سایتهای مرتبط با آنها را برای یک سایت هاب خاص دریافت کنیم. همچنین، خواهیم دید که چگونه می توانیم این گزارش را با استفاده از URL مرکز مدیریت آنلاین شیرپوینت تولید کنیم.
اسکریپت PnP PowerShell برای اتصال همه سایت ها به یک سایت هاب
با استفاده از کد PnP PowerShell زیر، می توانیم انواع گزارش های ذکر شده را دریافت کنیم:
- همه سایتهای مرتبط یا متصل را به یک سایت مرکزی خاص دریافت کنید.
- یک گزارش اصلی برای همه سایت ها و سایت های مرکزی آنها از مستاجر آنلاین شیرپوینت دریافت کنید.
- CLS
- #############################################################################################################################################################
- #Description: Using this script we can generate all associated sites for a partuclar hub site and also all hub sites and their associated sites from a tenant.
- #Created By: Habibur Rahaman
- #Date: 12-22-2019
- #############################################################################################################################################################
- ###################variables section###################################
- $userName = "Global-sharepoint2019@globalsharepoint2019.onmicrosoft.com - <Your User name>"
- $passWord = "YourPassWord"
- $siteURL="https://globalsharepoint2019-admin.sharepoint.com/ <Your sharepoint admin url>"
- ###################variables section ends here###################################
- $encPassWord = convertto-securestring -String $passWord -AsPlainText -Force
- $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $userName, $encPassWord
- Connect-PnPOnline -Url $siteURL -Credentials $cred
- #Getting the hub site id for which we want to generate the report - those are connected to this hub site.
- $hubSiteURL="https://globalsharepoint2019.sharepoint.com/sites/SPHubSite"
- $hubSite = Get-PnPTenantSite $hubSiteURL
- $hubSiteId = $hubSite.HubSiteId
- write-host " #####Generating sites connected a single hub site report######: " -BackgroundColor DarkGreen
- write-host "Hub Site URL: " $hubSiteURL
- $associatedSites = @()
- #Get all sites associated to the hub site(in the above hub site)
- $sitesTenant = Get-PnPTenantSite -Detailed
- $sitesTenant | select url | % {$oneSite = Get-PnPTenantSite $_.url
- if($oneSite.hubsiteid -eq $hubSiteId)
- {
- write-host "Associated Site URL: " $oneSite.url
- $assocatedSiteObject = New-Object PSObject
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Hub Site URL" -value $hubSiteURL
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Hub Site ID" -value $hubSiteId
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -Name "Associated Site URL" -value $oneSite.Url
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Associated Site Status" -value $oneSite.Status
- #Add the object with property to an Array
- $associatedSites += $assocatedSiteObject
- }
- }
- #Export the site array collection to a CSV file
- $associatedSites | Export-CSV "C:\Temp\GetAllSitesAssociatedInHubSites\SitesConnectedToSingleHubSiteReprot.csv" -NoTypeInformation
- write-host " #####Generating sites connected a single hub site report- ends here######: " -BackgroundColor DarkYellow
- ######The below script will list down all hub sites and their associated connected sites in the tenant.##################
- write-host "------------------------------------------------------------------------------------------------------"
- write-host " #####Generating master hub sites along with connected sites report for the tenant. ######:" -BackgroundColor DarkGreen
- $hubSites=Get-PnPHubSite
- $associatedSites = @()
- foreach($oneHubSite in $hubSites)
- {
- $test=$oneHubSite;
- write-host "Hub Site URL: " $oneHubSite.SiteUrl
- $hubSite = Get-PnPTenantSite $oneHubSite.SiteUrl;
- $hubSiteId = $hubSite.HubSiteId
- #Get all sites associated to the hub site(in the above hub site)
- $sitesTenant = Get-PnPTenantSite -Detailed
- $sitesTenant | select url | % {$oneSite = Get-PnPTenantSite $_.url
- if($oneSite.hubsiteid -eq $hubSiteId)
- {
- write-host "Associated Site URL: " $oneSite.url
- $assocatedSiteObject = New-Object PSObject
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Hub Site URL" -value $oneHubSite.SiteUrl
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Hub Site ID" -value $oneHubSite.ID
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -Name "Associated Site URL" -value $oneSite.Url
- $assocatedSiteObject | Add-Member -MemberType NoteProperty -name "Associated Site Status" -value $oneSite.Status
- #Add the object with property to an Array
- $associatedSites += $assocatedSiteObject
- }
- }
- }
- #Export the site array collection to a CSV file
- $associatedSites | Export-CSV "C:\Temp\GetAllSitesAssociatedInHubSites\SitesConnectedToHubSiteReprotForTenant.csv" -NoTypeInformation
- write-host "##### Generating master hub sites along with connected sites report for the tenant ends here ######:" -BackgroundColor DarkYellow
- ######The below script will list down all hub sites and their associated connected sites in the tenant - ends here##################
توضیح در مورد کد موجودی سایت هاب
این اسکریپت یک نام کاربری آنلاین شیرپوینت، رمز عبور، URL مدیریت آنلاین شیرپوینت و یک URL سایت هاب می گیرد. برای به دست آوردن تمام سایت های مرتبط برای یک سایت هاب خاص، باید URL سایت هاب را بدانیم و با استفاده از دستور Get-PnPTenantSite باید شناسه آن سایت هاب را دریافت کنیم که در حین حلقه زدن از طریق تمام سایت های فعال استفاده می شود. برای شناسایی اینکه آیا آن سایت فعال بخشی از این سایت هاب است یا خیر. و در نهایت برای هر کدام از سایتهای فعال صفت "hubsiteid" با "hubsiteid" سایت hub چیزی که در ابتدا به عنوان پارامتر ارسال کردهایم مطابقت دارد - سپس مجموعه را به عنوان یک فایل CSV صادر میکنیم.
برای سطح مستاجر، گزارش سایتهای هاب، ما از همین تکنیک استفاده میکنیم، اما در اینجا URL سایت هاب را به عنوان پارامتر ارسال نمیکنیم. در عوض، ما مجموعه سایت های هاب را با استفاده از دستور Get-PnPHubSite و مجموعه سایت های فعال را با استفاده از دستور Get-PnPTenantSite از یک مستاجر می خوانیم. سپس ابتدا از طریق تمام سایتهای هاب و سپس در داخل حلقه for هر حلقه Get-PnPHubSite، یک حلقه دیگر برای هر حلقه برای مجموعه Get-PnPTenantSite می نویسیم، سپس ویژگی "hubsiteid" را از سایت هاب و سایت مستاجر و هر جایی که مطابقت را در آن ذخیره می کنیم، پیدا می کنیم. یک شیء آرایه - در نهایت ما آن را به یک فایل CSV، همان فایل دیگر صادر می کنیم.
پیش نیازهای اسکریپت PnP
قبل از اجرای کد بالا باید PnP را در ماشینی که کد بالا را اجرا می کنیم نصب کنیم. راههای زیادی برای نصب وجود دارد - در زیر سادهترین آنها آورده شده است.