2016-09-26 2 views
0

Я пробовал несколько разных идей кодирования для загрузки нескольких файлов с известными типами файлов (. Xlsx) и неизвестных типов файлов (. *) С сайта SharePoint. Однако все, что я пробовал до сих пор, не работает. Есть ли способ сделать то, что я нашел здесь https://blogs.msdn.microsoft.com/varun_malhotra/2012/02/08/sharepoint-2010-powershell-download-all-files-in-document-library-to-network-share-file-share/, но только для файлов?Каков наилучший способ загрузки нескольких файлов с помощью известных типов файлов из SharePoint с помощью Powershell?

У меня есть это работает для файлов, которые являются статическими имя и местоположение:

#Setting Path Locations to files to be copied 
$SharePoint = "https://Pig.com/MyPig/Breed.docx" 
$Path = "$ScriptPath\$MyPig\$Breed\$($MyPig)_$($Breed).docx" 

#Get User Information 
$UserName = Read-Host "Enter your username as [email protected]" 
$Password = Read-Host "Enter your password" -AsSecureString 

#Download Files 
$WebClient = New-Object System.Net.WebClient 
$WebClient.Credentials = New-Object System.Net.Networkcredential($Username, $Password) 
$WebClient.DownloadFile($SharePoint, $Path) 

Приведенный выше код не работает, когда имя файла и тип неизвестен. Какие предложения вы можете мне дать, чтобы я мог работать?

ответ

0

Если вы можете использовать свои учетные данные, то это будет работать ...

# 'http://sharepointsite.com/sites/Site1/ListName/Forms/AllItems.aspx' 
# becomes '\\sharepointsite.com\sites\Site1\ListName' 

$destPath = 'D:\Temp\SPDocs' 
$spPath = '\\sharepointsite.com\sites\Site1\ListName' 

Get-ChildItem -Path '\\sharepointsite.com\sites\Site1\ListName' | Where-Object { $_.name -like 'MS*' } | Copy-Item -Destination $destPath 

... в противном случае, попробуйте это ...

$destPath = 'D:\Temp\SPDocs' 
$spPath = '\\sharepointsite.com\sites\Site1\ListName' 

net use $spPath $password /USER:$username 

Get-ChildItem -Path '\\sharepointsite.com\sites\Site1\ListName' | Where-Object { $_.name -like 'MS*' } | Copy-Item -Destination $destPath 

net use $spPath /delete 

Окно должно кэшировать учетные данные из net use command

+0

Возможно, вы все равно сможете загрузить его без использования сети, если я уже подключен с помощью $ WebClient.Credentials = New-Object System.Net.Networkcredential ($ Username, $ Password)? Я запускаю это с общего диска на виртуальной машине. – Underdog

+0

Мне также нужно изменить путь по имени клиента, так как файлы, которые я пытаюсь загрузить, основаны на имени клиента. # 'Http://sharepointsite.com/sites/$Site1/ListName/Forms/AllItems. aspx ' # становится' \\ sharepointsite.com \ sites \ Site1 \ ListName ' $ Site1 = Read-Host' Введите имя клиента ' $ destPath =' D: \ Temp \ SPDocs ' $ spPath =' \\ sharepointsite .com \ sites \ $ Site1 \ ListName ' Get-ChildItem -Path' \\ sharepointsite.com \ sites \ $ Site1 \ ListName '| Where-Object {$ _. Name -like 'MS *'} | Copy-Item -Destination $ destPath – Underdog

+0

@Underdog с веб-запросом, чтобы у вас была веб-страница для разбора. Вы должны иметь возможность использовать те же самые кредиты ($ username/$ password) в моем коде, и их проще копировать. Пожалуйста, проверьте, работает ли мой второй метод, если да, я обновлю код в соответствии с вашими требованиями. – TechSpud