با استفاده از PNP، میتوانیم نسخه پشتیبان کامل یک سایت را بازیابی کنیم، اما فقط برای انتقال ستونهای سایت از یکی به دیگری، باید اسکریپتهای سفارشی PS بنویسیم. در این مقاله، من یک گروه Site Column را انتخاب می کنم و آن را با استفاده از PNP PowerShell به سایت دیگری ارائه می کنم.
قبل از ادامه، باید مطمئن شویم که SharePoint Online Management Shell روی دستگاه شما نصب شده است. اگر نه، از این لینک برای دانلود و نصب آن استفاده کنید. همچنین، ما باید مطمئن شویم که مجوزهای کافی برای بازیابی طرح فیلد از سایت مبدا و ارائه آنها در سایت هدف را داریم.
اگر در داخل یک مستاجر تهیه کنیم، مشکل چندانی در تامین فیلدهای طبقه بندی وجود نخواهد داشت. اگر نیاز به ارائه فیلدهای طبقه بندی در مستاجر دیگری داریم، باید مجوزهای مربوط به فروشگاه مدت دار داشته باشیم. در غیر این صورت، ما قادر به ایجاد مجموعههای اصطلاحی نیستیم که به نوبه خود بر فرآیند تأمین PNP تأثیر بگذارد.
من سایت PSSamples را از مستاجر خود به عنوان منبع در نظر میگیرم و ستونهای سایت را از گروه ستون سایت به نام «ستونهای من» منتقل میکنم. من تمام ستونهای سایت را که در زیر این گروه قرار میگیرند، با استفاده از اسکریپت PS زیر دریافت میکنم و آن را به عنوان یک XML فراهمکننده PNP قاب میکنم.
- Connect-PnPOnline -Url "https://**********.sharepoint.com/sites/PSSamples"
- $flds= Get-PnPField -Group "My Columns"
- $fldsSchema='<?xml version="1.0"?>
- <pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2018/01/ProvisioningSchema">
- <pnp:Preferences Generator="OfficeDevPnP.Core, Version=2.23.1802.0, Culture=neutral, PublicKeyToken=5e633289e95c321a" />
- <pnp:Templates ID="CONTAINER-TEMPLATE-0F2053A13C224D369E82C2FA2EC4A736">
- <pnp:ProvisioningTemplate ID="TEMPLATE-0F2053A13C224D369E82C2FA2EC4A736" Version="1" BaseSiteTemplate="STS#0">
- <pnp:SiteFields>'
- ForEach($fld in $flds){
- $fldsSchema+=$fld.SchemaXml
- }
- $fldsSchema+='</pnp:SiteFields> </pnp:ProvisioningTemplate>
- </pnp:Templates>
- </pnp:Provisioning>'
- $fldsSchema
من طرح XML را در قالب طرحواره PNP Provisioning که در ژانویه 2018 منتشر شد، ضمیمه کردم تا بتوانیم XML نتیجه را با استفاده از کتابخانه های اصلی PNP به یک سایت هدف ارائه دهیم. پس از اجرای کد بالا، یک XML مانند زیر دریافت خواهیم کرد.
- <?xml version="1.0"?>
- <pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2018/01/ProvisioningSchema">
- <pnp:Preferences Generator="OfficeDevPnP.Core, Version=2.23.1802.0, Culture=neutral, PublicKeyToken=5e633289e95c321a" />
- <pnp:Templates ID="CONTAINER-TEMPLATE-0F2053A13C224D369E82C2FA2EC4A736">
- <pnp:ProvisioningTemplate ID="TEMPLATE-0F2053A13C224D369E82C2FA2EC4A736" Version="1" BaseSiteTemplate="STS#0">
- <pnp:SiteFields>
- <Field Type="Note" DisplayName="Test Column 3" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" NumLines="6" RichText="TRUE" RichTextMode="FullHtml" IsolateStyles="TRUE" Sortable="FALSE" Group="My Columns" ID="{321e4062-e9a3-4ea3-9a91-62b55e237ce1}" SourceID="{22ad7aad-8c48-4a68-a747-7f7fc2470fda}" StaticName="Test_x0020_Column_x0020_3" Name="Test_x0020_Column_x0020_3" Version="1"></Field>
- <Field Type="Text" DisplayName="Test Column1" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" MaxLength="255" Group="My Columns" ID="{8dbafd95-7e25-4866-ba68-eecb55217b2a}" SourceID="{22ad7aad-8c48-4a68-a747-7f7fc2470fda}" StaticName="Test_x0020_Column1" Name="Test_x0020_Column1" Version="1"></Field>
- <Field Type="Text" DisplayName="Test COlumn2" Required="FALSE" EnforceUniqueValues="FALSE" Indexed="FALSE" MaxLength="255" Group="My Columns" ID="{a9638cdf-16d3-43c4-be8e-a3f434c08ae6}" SourceID="{22ad7aad-8c48-4a68-a747-7f7fc2470fda}" StaticName="Test_x0020_COlumn2" Name="Test_x0020_COlumn2" Version="1"></Field>
- </pnp:SiteFields>
- </pnp:ProvisioningTemplate>
- </pnp:Templates>
- </pnp:Provisioning>
XML را در یک فایل جداگانه ذخیره کنید و اسکریپت زیر را اجرا کنید تا آن را در یک سایت هدف قرار دهید.
- Connect-PnPOnline -Url "https://*********.sharepoint.com/sites/content1"
- Apply-PnPProvisioningTemplate -Path "C:\Users\ADMIN\Desktop\fields.xml"
PowerShell نوار پیشرفت تعاملی را نشان می دهد که در آن می توانیم زمینه را با به روز رسانی های میدانی مشاهده کنیم. در صورت نیاز، میتوانیم ثبت کنیم که فرآیند در پسزمینه اجرا شده است. پس از تهیه، به تنظیمات سایت مورد نظر بروید و سپس به صفحه ستون های سایت بروید تا تغییرات ایجاد شده در سایت شیرپوینت را با استفاده از تامین PNP مشاهده کنید.
![شیرپوینت](http://pezhvak24.ir/dl/10kcor/cscd/article/move-site-columns-from-a-site-collection-to-another-using-pnp-powershell/Images/1.jpg)