Worum geht's?
Die Einbindung von Nexcloud-Verzeichnissen als logische Laufwerke in Windows ist nicht zuverlässig. Die HTTP-Methoden, welche cURL zur Verfügung stellt funktionieren zuverlässig und sind für die QRS-Datenmengen ausreichend schnell. Um cURL in Windows zu verwenden, muss dem Skript ein Pfad zum Programm mitgegeben werden. Das Cmdlet Invoke-Webrequest leistet das gleiche ohne diese Erfordernis.
Download
Für einen Download ist zunächst der Pfad zur Datei in der Cloud aufzubauen:
$URI = "https://ppp.woelkli.com/remote.php/dav/files/benutzer[/unterverzeichnis]/datei"
Die Credentials fürs Login werden über den Konstruktor New-Object im Parameter -ArugmentList ans neue PSCredential-Objekt übergeben und dem Invoke-Webrequest mitgegeben.
$PSC = New-Object System.Management.Automation.PSCredential -ArgumentList($Usr, $PwS)
Um die unnötige Analyse des heruntergeladenen Inhalts zu unterdrücken, wird der Parameter -UseBasicParsing mitgegeben.
Der Download von Dateien in ein Zielverzeichnis $Dst ist intuitiv:
Invoke-Webrequest -UseBasicParsing -Uri $URI -Credential $PSC -OutFile $Dst
Upload
Für den Upload muss die Methode zur Befehlsverarbeitung an den Webserver angegeben werden. Für Uploads ist dies PUT als Wert für den Parameter -Method. Zur Angabe der lokalen Datei wird der Parameter -InFile verwendet:
$WRS = Invoke-Webrequest -UseBasicParsing -URI $URI -Method PUT -Credential-PSC -InFile $Src
Das Cmdlet gibt ein Objekt des Typs WebResponse zurück, welches zwei Eigenschaften enthält, die den Status nach der Übertragung enthalten:
$WRS.StatusCode Werte für fehlerfreie Übertragung sind 201 (Created) und 204 (no content)
$WRS.StatusDescription enthält eine entsprechende Beschreibung des Status
Bemerkungen :