انتقال فایلها و فلدرها به شیرپوینت

همان طور که میدانید شیرپوینت جزو بهترین سیستمهای اشتراک گذاری فایل در سازمان میباشد. به اینگونه سرویسها file server هم گفته میشود. قصد داریم تا در این مقاله روش انتقال فایلها و فلدرها به شیرپوینت را آموزش دهیم.

انتقال فایلها و فلدرها به شیرپوینت

یکی از امکانات شیرپوینت سازمانی استفاده از فضای ابری و یا یک اشتراک یک فولدر برای افراد، گروه های کاری و دپارتمانهای مختلف سازمان می باشد که پس از ایجاد سایت های اختصاصی برای هر یک، می توانید از این امکانات در قالب یک فضای folder share استفاده کرد.
اگر در سازمان خود به تازگی امکانات شیرپوینت را راه اندازی کرده اید می توانید یک پروژه عمومی” استفاده از مخزن اسناد” را نیز تعریف کنید. برای این کار اگر در سازمان شما فضایی برای به اشتراک گذاری فایل ها از قبل وجود داشته است، پیشنهاد می شود، این اطلاعات را به صورت یکپارچه به بان اطلاعاتی شیرپوینت سازمان، منتقل کنید .
برای سازماندهی به انتقال این اطلاعات ، در صورتی که تعداد فایل ها و حجم آنها بسیار زیاد باشد ، زمان بسیاری توسط نیروی انسانی صرف خواهد شد. برای جلوگیری از این اتلاف وقت و انتقال اطلاعات به طور کامل می توانید از گام های زیر استفاده کنید:
1- کدهای زیر را کپی کرده و در فایلی با نام ImportFolderToSite.psm1 در درایو C سرور شیرپوینت ذخیره نمایید:

#--------------------------------------------------------------------------------- 
#sharepointhome.ir
#--------------------------------------------------------------------------------- 
#requires -Version 2

Function Import-OSCFolder
{
<#
 	.SYNOPSIS
        Import-OSCFolder is an advanced function which can be used to import a folder to a library on site.
    .DESCRIPTION
        Import-OSCFolder is an advanced function which can be used to import a folder to a library on site.
    .PARAMETER  <SiteUrl>
		Specifies the site url.
	.PARAMETER  <Library>
	 	Specifies the library of site.
	.PARAMETER  <Path>
		Specifies the path of the folder.
    .EXAMPLE
        C:\PS> Import-OSCFolder -siteurl "http://win-lfseeatt8jr/sites/myteam" -Library "Shared Documents" -path  "C:\Users\Administrator\Desktop\Test"

		
		This command shows how to import folder "C:\Users\Administrator\Desktop\Test" to Site "http://win-lfseeatt8jr/sites/myteam".
#>
	[CmdletBinding()]
	param 
	(
		[Parameter(Mandatory=$true,Position=0)]
		[string]$Siteurl,
		[Parameter(Mandatory=$true,Position=1)]
		[string]$Library,
		[Parameter(Mandatory=$true,Position=2)]
		[string]$Path
	)
	
	
	if ((Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'})-eq $null) 
    {
    	Add-PSSnapin "Microsoft.SharePoint.Powershell"
    }
	#Get sp site
	$spWeb = Get-SPWeb $siteurl -ErrorAction SilentlyContinue
	If($spWeb)
	{	
		#Get the specified library
		$spDocumentLibrary = $spWeb.Lists[$Library]  
		If($spDocumentLibrary)
		{
			#verify if the path is valid
			If(Test-Path -Path $Path)
			{
				#Get the folder
				$Fol = Get-Item -Path $Path 
				If($Fol.PSIsContainer)
				{
					$result = $spDocumentLibrary.ParentWeb.GetFolder($spDocumentLibrary.RootFolder.ServerRelativeUrl +"/"+ $Fol.Name )
					If($result.Exists -eq "True")
					{
						Write-Warning "There is a folder existing on site $siteUrl."
					}
					Else
					{
						#Import the folder to site library.
						$SPFol = $spDocumentLibrary.AddItem("",[Microsoft.SharePoint.SPFileSystemObjectType]::Folder,$Fol.Name) 
						$SPFol.Update()
						SubFolder  $path $SPFol $spDocumentLibrary
						
						Write-Host "Import '$Path' folder to site $siteurl successfully."
					}
				}
				Else
				{
					Write-Error "The object is not a folder."
				}
			}
			Else 
			{
				Write-Error "Invalid path,try again."
			}
		}
		Else
		{
			Write-Warning "There is no library named $Library on site $siteurl."
		}
	}
	Else
	{
		Write-Error "Not find the specified site $siteurl"
	}

}

Function SubFolder($Folder,$SPFol,$spDocumentLibrary)
{
	#Import the folder and subfolders to site library.
	$SPFolder = $spDocumentLibrary.ParentWeb.GetFolder($SPFol.Folder.ServerRelativeUrl)
	$Objects = Get-ChildItem -Path $Folder 
	Foreach($obj in $Objects)
	{
		If($obj.PSIsContainer)
		{	
			$SubFolder = $spDocumentLibrary.AddItem($SPFolder.ServerRelativeUrl,[Microsoft.SharePoint.SPFileSystemObjectType]::Folder,$obj.Name)
			$SubFolder.Update()
			$Fullname = $obj.FullName
			SubFolder  $Fullname $SubFolder $spDocumentLibrary 
			
		}
		Else
		{	
			$fileStream = ([System.IO.FileInfo]$obj).OpenRead() 
			$contents = new-object byte[] $fileStream.Length 
			$FolderObj = $spDocumentLibrary.ParentWeb.GetFolder($SPFolder.ServerRelativeUrl)
			$SpFile = $FolderObj.Files.Add($FolderObj.Url + "/"+$obj.Name, $contents, $true)
			$spItem = $SpFile.Item
		}
	}

}


2- در سرور شیرپوینت powershell را به صورت run as admin باز کنید و دستورات زیر را داخل آن وارد کنید

Add-PSSnapin *sharepoint*
Import-Module C:\ImportFolderToSite.psm1

3- در سایت شیرپوینتی مورد نظر که قصد دارید انتقال فایلها و فلدرها به شیرپوینت را در آن سایت انجام دهید یک librari یا همان مخزن اسناد بسازید و نام آن را به خاظر بسپارید.

4- اکنون powershell شما آماده انتقال اطلاعات با دستور زیر میباشد

Import-OSCFolder -siteurl "http://SharePointSiteURL" -Library "LibrariName" -path "F:\NeedUpload\"

پیش از run کردن کد بالا موارد زیر را اینگونه تغییر دهید:

http://SharePointSiteURL : آدرس سایت شیرپوینتی که مقصد انتقال خواهد بود

LibrariName : نام مخزنی که فایلها در آن قرار میگیرد

F:\NeedUpload : آدرس فلدری که قصد انتقال آن را دارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *