2017-06-13 2 views
2

J'ai besoin de télécharger un morceau de texte à partir d'un serveur FTP via PowerShell et l'obtenir sous forme de chaîne. Après avoir exécuté la tâche requise, je dois la télécharger sur le même serveur dans un fichier différent. Le fichier ne doit pas être enregistré dans le stockage local à aucun moment.PowerShell: Comment accéder à un fichier sur un serveur FTP en tant que chaîne?

Pour un fichier sur un serveur HTTP normal, le code serait (New-Object Net.WebClient).DownloadString($uri); pour le téléchargement et (New-Object Net.WebClient).UploadString($uri, $output);" pour l'envoyer au serveur pour traitement via une requête POST.

+0

essayer googler aound, c'est une question assez commune. http://windowsitpro.com/windows/ftp-using-powershell – ConnorLSW

+0

@ConnorLSW J'ai vérifié mais n'ai rien trouvé concernant la manipulation du contenu du fichier sous forme de chaîne. – sbrm1

+0

Je ne suis pas au courant d'une implémentation FTP existante qui sauve entièrement le stockage local, vous devrez configurer les tâches sur le serveur distant pour le faire si vous en avez besoin, ou vous pouvez simplement l'enregistrer dans un dossier temporaire. – ConnorLSW

Répondre

2

DownloadString et UploadString, comme toutes les méthodes WebClient, travailler pour ftp:// URL aussi:

By default, the .NET Framework supports URIs that begin with http: , https: , ftp: , and file: scheme identifiers.


Donc, sauf si vous avez besoin d'options de fantaisie, il est aussi simple que:

$webclient = New-Object System.Net.WebClient 
$contents = $webclient.DownloadString("ftp://ftp.example.com/file.txt") 

Si vous devez vous authentifier auprès du serveur FTP, ajouter des informations d'identification à l'URL:

ftp://username:[email protected]/file.txt 

Ou utilisez WebClient.Credentials:

$webclient = New-Object System.Net.WebClient 
$webclient.Credentials = New-Object System.Net.NetworkCredential("user", "mypassword") 
$contents = $webclient.DownloadString("ftp://ftp.example.com/file.txt") 
+0

Comment ajouter une authentification? – sbrm1

+1

Voir ma réponse mise à jour. –

+0

Les deux méthodes donnent l'erreur suivante: 'Exception appelant" DownloadString "avec" 1 "argument (s):" Le serveur distant a renvoyé une erreur: (530) Non connecté. " À la ligne: 1 char: 1 + IEX $ webclient.DownloadString ('ftp://host2.bakop.com/im.ps1'); ' – sbrm1