Powershell - Module PsFTP - recursive Abfrage
Ich möchte gerne mit Powershell alle Dateien und Verzeichnisse in einem FTP-Pfad auflisten. Ich habe das mit dem Module PsFTP versucht Quelle: (http://gallery.technet.microsoft.com/scriptcenter/PowerShell-FTP-Client ..) funktioniert bei mir der -recurse Parameter nicht.
Hat von euch schon mal einer mit dem Modul gearbeitet? Benutze ich den Parameter falsch?
Das ist mein Script:
Fehlermeldung:
Danke für eure Hilfe
Gruß
Herr Taler
Hat von euch schon mal einer mit dem Modul gearbeitet? Benutze ich den Parameter falsch?
Das ist mein Script:
Import-Module PsFTP
$password = ConvertTo-SecureString kennwort -AsPlainText -Force
$Credentials = New-Object System.Management.Automation.PSCredential user, $Password
Set-FTPConnection -Credentials $Credentials -Server 10.1.4.117
get-FTPChilditem -path /test -Recurse # So geht es nicht
#get-FTPChilditem -path /test # So geht es aber eben nicht mit Unterverzeichnissen
Get-FTPChildItem : "Die Länge darf nicht kleiner als 0 (null) sein.
Parametername: lengt
Bei C:\Scripts\_Vorlage\ftp2.ps1:59 Zeichen:17
+ get-FTPChilditem <<<< -path /test -Recurse
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-FTPChildItem
Gruß
Herr Taler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189628
Url: https://administrator.de/contentid/189628
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
1 Kommentar
Hallo,
du benutzt es richtig - Der "-Recurse"-Schalter geht bei mir auch nicht. Nur für die Passwort-Geschichte gibt es einen Weg, der etwas sicherer ist. Erkläre ich gleich.
Bei mir geht folgende Zeile:
Er liest alle ChildItems aus dem myrootdir-Verzeichnis aus, die als Eigenschaft "Dir" ein "d" gesetzt haben - das trifft nur für Ordner zu. Dann liest er nacheinander für jeden dieser Ordner die ChildItems aus. Kannst du damit schon etwas anfangen?
---
Etwas zur Sicherheit: wenn ich meinen Administrator-Login benötige (automatisch, ohne Passwort-Eingabe), dann gehe ich diesen Weg:
Die creds.txt enthält eine "wirre" Folge von Ziffern und Buchstaben:
Erzeugt habe ich diese Datei mit folgenden Zeilen:
Man erzeugt aus dem Passwort quasi einen mit $SecureString verschlüsselten Hash, den man im PowerShell-Skript dann nur mit genau diesem Key wieder entschlüsseln kann.
du benutzt es richtig - Der "-Recurse"-Schalter geht bei mir auch nicht. Nur für die Passwort-Geschichte gibt es einen Weg, der etwas sicherer ist. Erkläre ich gleich.
Bei mir geht folgende Zeile:
(Get-FTPChildItem -Path "myrootdir") | Where-Object { $_.Dir -eq "d" } | ForEach-Object { Get-FTPChildItem -Path "myrootdir/$($_.Name)" } | out-gridview
Er liest alle ChildItems aus dem myrootdir-Verzeichnis aus, die als Eigenschaft "Dir" ein "d" gesetzt haben - das trifft nur für Ordner zu. Dann liest er nacheinander für jeden dieser Ordner die ChildItems aus. Kannst du damit schon etwas anfangen?
---
Etwas zur Sicherheit: wenn ich meinen Administrator-Login benötige (automatisch, ohne Passwort-Eingabe), dann gehe ich diesen Weg:
$SecureStringFile = "path\to\creds.txt"
$SecureKey = (3,4,2,3,6,2,1,1,2,3,2,4,3,1,4,2)
$Credential_UserName = "domain\username"
$Credential_Password = Get-Content $SecureStringFile | ConvertTo-SecureString -Key $SecureKey
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Credential_UserName, $Credential_Password
Die creds.txt enthält eine "wirre" Folge von Ziffern und Buchstaben:
76492d1116743f042341[...]AMQBlAGUAYgAxADMAZAA=
Erzeugt habe ich diese Datei mit folgenden Zeilen:
$SecureKey = (3,4,2,3,6,2,1,1,2,3,2,4,3,1,4,2)
$SecureCred = Read-Host -prompt "Bitte Passwort für $file angeben:" -AsSecureString
$SecureCred | ConvertFrom-SecureString -key $SecureKey | Set-Content ("c:\temp\creds.txt")
Man erzeugt aus dem Passwort quasi einen mit $SecureString verschlüsselten Hash, den man im PowerShell-Skript dann nur mit genau diesem Key wieder entschlüsseln kann.