2021-05-08, 09:54
Sharepoint-Server haben ein Maximum von 256 Zeichen für Pfadangaben, Leerzeichen in Datei- und Ordnernamen werden dabei als „%20“ dargestellt, sodass für jedes Leerzeichen drei Zeichen „draufgehen“. Mit dem folgenden Powershell-Skript kann man die Dateien in einem Verzeichnis identifizieren, die das Limit vermutlich sprengen.
Die erzeugte CSV-Datei hat drei Spalten: Pfadlänge, Pfadlänge wenn Leerzeichen als „%20“ dargestellt werden, Pfad.
gci "K:\inputpath" | Select @{N="Path Length";E={$_.FullName.Length}}, @{N="URL Length";E={$_.FullName.replace(' ','+++').Length}},
Fullname | Export-Csv -NoTypeInformation -Delimiter ";" -Path "t:\ABC\filelaengen.csv" |
gci "K:\inputpath" | Select @{N="Path Length";E={$_.FullName.Length}}, @{N="URL Length";E={$_.FullName.replace(' ','+++').Length}},
Fullname | Export-Csv -NoTypeInformation -Delimiter ";" -Path "t:\ABC\filelaengen.csv"
2018-01-14, 17:13
Hier ein Code-Schnipsel, zusammenkopiert aus Stackexchange-Antworten, mit dem man eine Datei vom Sharepoint laden kann. Wichtig war hier, dass die eventuell bereits lokal vorhandene Datei nicht mehr genutzt wird. Dazu wird sie gelöscht (man könnte noch prüfen, ob sie überhaupt vorhanden ist…). Der Sharepoint-Pfad wird innerhalb der Powershell als Laufwerk gemountet, das erlaubt dann die Nutzung einfacher Kopier-Befehle.
[String]$Ziel = "somelocalfile.txt"
Write-Host "Loesche die alte Datei"
Remove-Item -Path $Ziel
$FileExists = Test-Path $Ziel
If ($FileExists -eq $True) {
Write-Host "Fehler: Datei noch vorhanden!"}
Else {
Write-Host "OK: Alte Datei geloescht!"
}
Write-Host "Mounte Sharepoint als virtuelles Laufwerk..."
[String]$WebDAVShare = '\\some\unc\path\'
New-PSDrive -Name S -PSProvider FileSystem -Root $WebDAVShare
Write-Host "Kopiere ..."
Copy-Item "S:/someremotefile.xlsx" $Ziel
$FileExists = Test-Path $Ziel
If ($FileExists -eq $True) {
Write-Host "OK: Neue Datei vorhanden!"}
Else {
Write-Host "Fehler: Datei wurde nicht heruntergeladen!"
}
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") |
[String]$Ziel = "somelocalfile.txt"
Write-Host "Loesche die alte Datei"
Remove-Item -Path $Ziel
$FileExists = Test-Path $Ziel
If ($FileExists -eq $True) {
Write-Host "Fehler: Datei noch vorhanden!"}
Else {
Write-Host "OK: Alte Datei geloescht!"
}
Write-Host "Mounte Sharepoint als virtuelles Laufwerk..."
[String]$WebDAVShare = '\\some\unc\path\'
New-PSDrive -Name S -PSProvider FileSystem -Root $WebDAVShare
Write-Host "Kopiere ..."
Copy-Item "S:/someremotefile.xlsx" $Ziel
$FileExists = Test-Path $Ziel
If ($FileExists -eq $True) {
Write-Host "OK: Neue Datei vorhanden!"}
Else {
Write-Host "Fehler: Datei wurde nicht heruntergeladen!"
}
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")