我们有一个包含大约8,000个SharePoint文档文件URL的csv文件 - 他们所涉及的文件必须下载到文件共享位置,然后从SharePoint中删除。这些文件不在同一站点中,而是位于服务器场中的几百个文件中。我们希望只删除指定的文件 - 而不是整个库。
我们有以下脚本来实现下载,它会创建文件夹结构,以便下载文件。
param (
[Parameter(Mandatory=$True)]
[string]$base = "C:\Export\",
[Parameter(Mandatory=$True)]
[string]$csvFile = "c:\export.csv"
)
write-host "Commencing Download"
$date = Get-Date
add-content C:\Export\Log.txt "Commencing Download at $date":
$webclient = New-Object System.Net.WebClient
$webclient.UseDefaultCredentials = $true
$files = (import-csv $csvFile | Where-Object {$_.Name -ne ""})
$line=1
Foreach ($file in $files) {
$line = $line + 1
if (($file.SpURL -ne "") -and ($file.path -ne "")) {
$lastBackslash = $file.SpURL.LastIndexOf("/")
if ($lastBackslash -ne -1) {
$fileName = $file.SpURL.substring(1 + $lastBackslash)
$filePath = $base + $file.path.replace("/", "\")
New-Item -ItemType Directory -Force -Path $filePath.substring(0, $filePath.length - 1)
$webclient.DownloadFile($file.SpURL, $filePath + $fileName)
$url=$file.SpURL
add-content C:\Export\Log.txt "INFO: Processing line $line in $csvFile, writing $url to $filePath$fileName"
} else {
$host.ui.WriteErrorLine("Exception: URL has no backslash on $line for filename $csvFile")
}
} else {
$host.ui.WriteErrorLine("Exception: URL or Path is empty on line $line for filename $csvFile")
}
}
write-Host "Download Complete"
我们有办法获得每个文件的版本吗?
我一直在寻找一种方法来执行删除,使用相同的csv文件作为参考 - 我看到的所有代码都是指删除整个库,这是不可取的。
我是PowerShell的新手,我迷路了。任何人都能解释一下吗?
非常感谢。
答案 0 :(得分:0)
这看起来可能有用。这是一种不同的方法,需要进行修改才能从CSV中提取文件列表,但看起来它通常可以完成你想要做的事情。
https://sharepoint.stackexchange.com/questions/6511/download-and-delete-documents-using-powershell