Question
(Résolu)Question sur Object System.IO.StreamReader
- Alan Pinard
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 77
- Remerciements reçus 0
Je tente de créer une fonction qui me permettra de lister les fichiers et répertoire sur un serveur FTP.
Ma fonction fonctionne mais pas complètement. Voici mon
Problème:
Je récupère ce que je veux par contre la variable contient aussi des chiffres en début de l'affichage qui correspond au numéro de la ligne. L'explication est étrange donc voici mon script et le résultat:
Function Get-VAFtpList {
PARAM ($URI,$Username,$password)
BEGIN {
If (($URI -eq \"\") -or (($URI.Contains(\"ftp://\")) -eq $False)){Write-Warning \"Please enter a valid server adress : ftp://1.1.1.1 or ftp://ftp.server.com or ftp://ftp.server.com/dir\"; Break}
}
PROCESS {
$Req = [System.Net.FtpWebRequest]::create($Uri)
$req.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory
$req.Credentials = New-Object System.net.NetworkCredential($username,$password)
$req.UseBinary = $true
$responseStream = ($req.GetResponse()).GetResponseStream()
$Sr = New-Object System.IO.StreamReader($responseStream)
$strList = New-Object System.Collections.ArrayList
$Str = $Sr.Readline()
While($Str -ne $Null) {
$strList.Add($str)
$str = $Sr.Readline()
}
Cls
$ResponseStream.Close()
}
END {
Return $strList
}
}
$b = Get-VAFtpList \"ftp://ftp.monserver.com/dir\" \"user\" \"1234\"
$b
Voici le resultat dans la console:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
administrator
cache
CHANGELOG.php
components
configuration.
COPYRIGHT.php
CREDITS.php
htaccess.txt
images
includes
index.php
index2.php
INSTALL.php
language
libraries
LICENSE.php
LICENSES.php
logs
media
modules
plugins
robots.txt
templates
tmp
VAArchive
xmlrpc
Les chiffres que l'on retrouve avant le listing du répertoire correspond au numéro de la ligne de chaque items.
Je n'arrive pas à comprendre comment je peux gérer le résultat que j'obtient dans mon arraylist et qui provient de l'object System.IO.StreamReader
Comment pui-je ne pas avoir le numéro des lignes dans le resultat de la fonction?
Merci,
Alan<br><br>Message édité par: Arnaud, à: 17/08/09 16:56
Alan Pinard
Version A
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
si tu ajoutes un appel à write-debug dans ta boucle on voit que les nombres ne proviennent pas du serveur :
[code:1]
While($Str -ne $Null)
{
Write-Debug $Str #$global:«»DebugPreference=\"continue\"
$strList.Add($str)
$str = $Sr.Readline()
}
...
[/code:1]
mais proviennent du retour d'appel de la méthode Arraylist.Add, on doit donc ajouter [void] pour ne pas l'envoyer dans le pipeline :
[code:1]
$global:«»DebugPreference=\"Silentlycontinue\"
...
While($Str -ne $Null)
{
[void]$strList.Add($str)
$str = $Sr.Readline()
}
[/code:1]
De plus l'appel à CLS dans le coprs de la fonction ne facilite pas le débug
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- (Résolu)Question sur Object System.IO.StreamReader