Question (Résolu) Supprimer les espaces entre les variables

Plus d'informations
il y a 16 ans 7 mois #5041 par BARTHE
Phebus écrit:

Judicieuse remarque :)

Je vais faire mieux alors :

write-host $destination\((get-item $source).Name).trim()

Je vais faire mieux alors:

tu vois, quand tu veux ... :P

B) génial je test ça dès que j'ai accès à un powershell v1

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5054 par Laurent Dardenne
Salut,
cyril.barthe écrit:

Par contre cette solution est fonctionnelle qu'avec la version Windows PowerShell 2.0 CTP.

Non, en v1 cela fonctionne :
[code:1]
$Batch=1|select Drive,Path,Name,FullPath
$Batch.Drive,$Batch.Path,$Batch.Name=\"C\",\"BATCH\",\"Defrag+Shutdown.cmd\"

$Batch.FullPath=\"$($Batch.Drive):\$($Batch.Path)\$($Batch.Name)\"
[/code:1]
Je pars d'un objet personnalisé, mais toi, je suppose, d'un objet fichier.

Voir aussi cette série d'articles sur Robocopy.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5074 par BARTHE
Bonjour et merci pour les liens
par contre je ne comprend pas cette ligne

[code:1]$Batch=1|select Drive,Path,Name,FullPath[/code:1]

si tu pouvais m'expliquer ce que tu fait ?

Merci beaucoup<br><br>Message édité par: cyril.barthe, à: 13/08/09 12:17

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5076 par Laurent Dardenne
cyril.barthe écrit:

si tu pouvais m'expliquer ce que tu fait ?

je crée ce que l'on appel sous PS un objet personnalisé.
Tu peux avoir le détail ici .
Cela est similaire à l'appel suivant:
[code:1]
#crée un objet PS
$Batch=new-object System.Management.Automation.PsObject
#Ajoute des membres dont j'ai besoin
$Batch=$Batch|add-member NoteProperty Drive \&quot;C\&quot; –passthru
$Batch=$Batch|add-member NoteProperty Path \&quot;Temp\&quot; –passthru
$Batch=$Batch|add-member NoteProperty Name \&quot;Nom.txt\&quot; –passthru
...
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5077 par BARTHE
merci mais il me faut commencer déjà a réviser la notion d'objet,je vais lire les notes de ton site.

Mais tu vois sous powershell V1 j'ai des problèmes à ce niveau la

$((get-item $source).Name)

il me prend dans la variable le premier $
alors que sous la V2 pas de problème

[code:1]foreach ($source in $selection)
{
robocopy $source $destination\$((get-item $source).Name) /TEE /MIR /R:0 /W:0 &gt;&gt; .\rapport.txt

if (($LASTEXITCODE -eq 16) -or ($LASTEXITCODE -eq 8) -or ($LASTEXITCODE -eq 4))
{
$i++ #si robocopy renvoi un code erreur on incremente la variable de 1
}
}
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5083 par Laurent Dardenne
cyril.barthe écrit:

il me prend dans la variable le premier $
alors que sous la V2 pas de problème

Oui je confirme le pb, tu devrais le poster sur MS Connect même si ce pb ne se pose plus en V2.
Tu peux contourner le problème en placant entre guillemets le paramètre contenant une sous-expression :
[code:1]robocopy $source \&quot;$destination\$((get-item $source).Name)\&quot;
[/code:1]
De mon coté j'ai testé avec XCopy
[code:1]
$source=\&quot;c:\temp\test.txt\&quot;
$destination=\&quot;c:\test\&quot;

xcopy $source $destination\$((get-item $source).Name)
#erreur
xcopy $source $destination\\&quot;$((get-item $source).Name)\&quot;
#ok
#ou préférablement
xcopy $source \&quot;$destination\$((get-item $source).Name)\&quot;
#ok
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.056 secondes
Propulsé par Kunena