SharePoint自動化系列——Upload files to SharePoint library using PowerShell.

 

平常的SharePoint站點測試中,咱們常常要作各類各樣的數據,今天又寫了幾個腳本,發現本身寫的腳本愈來愈多,因此我決定整理一下,並把一些經常使用的可複用的方法陸續發佈上來。web

今天先講一下用PowerShell上傳文件到SharePoint library中的方法,代碼以下:api

Add-PSSnapin Microsoft.SharePoint.PowerShell
function CreateAgendaDocumentData
{
    param($siteUrl,$listTitle,$filePath,$fileName)
    $site = Get-SPSite $siteUrl
    $web = $site.rootweb
    $List = $web.lists[$listTitle]
    $folder = $List.RootFolder  
    $File= Get-ChildItem $filePath    
    $fileStream =([System.IO.FileInfo](Get-Item $File.FullName)).OpenRead()
    [Microsoft.SharePoint.SPFile]$spFile = $folder.Files.Add($folder.Url + "/" + $fileName, [System.IO.Stream]$fileStream, $true) 
    $spFile.Item.Update()
    $fileStream.Close()
}

以上代碼中橘子色的字體是你須要輸入的信息,包括SharePoint site的url,list的title,本地文件的路徑以及你但願把它上傳到SharePoint中所起的新名字。ide

使用的方法以下:測試

$siteUrl = "填寫SharePoint站點的site url" 
$listTitle = "填寫想要上傳文件的list的title" 
$filePath = "填寫想要上傳的本地文件路徑"
CreateAgendaDocumentData -siteUrl $siteUrl -listTitle $listTitle -filePath $filePath

以後就能夠看到文件已經上傳到指定的list(library)中。字體

咱們能夠經過上述方法批量的進行上傳文件——Upload a large amount of files to SharePoint.url

Add-PSSnapin Microsoft.SharePoint.PowerShell
function CreateDocuments($siteUrl,$listTitle,$filePath,$fileName,$amount)
{
    $site = Get-SPSite $siteUrl
    $web = $site.rootweb
    $List = $web.lists[$listTitle]
    $folder = $List.RootFolder  
    $File= Get-ChildItem $filePath    
    $fileStream =([System.IO.FileInfo](Get-Item $File.FullName)).OpenRead()
    for($i=0;$i -lt $amount;$i++)
    {
        $newfileName = $fileName + $i.ToString()
        [Microsoft.SharePoint.SPFile]$spFile = $folder.Files.Add($folder.Url + "/" + $newfileName, [System.IO.Stream]$fileStream, $true) 
        $spFile.Item.Update()
    }
    $fileStream.Close()
}
function CallMethod()
{
    $siteUrl = Read-Host "Site URL"
    $listTitle = Read-Host "List Title"
    $filePath = Read-Host "File Path"
    $fileName = Read-Host "File Name Template"
    $amount = Read-Host "File Amount"
    $amount = [int]$amount
    Write-Host "Creating..." -ForegroundColor Green
    CreateDocuments $siteUrl $listTitle $filePath $fileName $amount
    Write-Host "Finished!" -ForegroundColor Magenta
}
CallMethod

保存到ps1文件中右鍵經過PowerShell運行便可。it


其實在實際操做中,有時不光要上傳文件,還須要給其所在item設定相關field的value,這個我之後會單獨整理一篇文章來說解相關的全部操做。自動化

若是你們以爲有幫助,請點個贊,我會陸續寫完關於用PowerShell實現SharePoint自動化方面的一系列文章。歡迎你們和我交流,給我提問。io

相關文章
相關標籤/搜索