Question argument au paramètre « Path », car il a la valeur

Plus d'informations
il y a 9 ans 5 mois #22509 par Laurent Dardenne
Un comportement à connaitre :
[code:1]
$destPath = \"\\\" + 'localhost' + \"\c$\temp\"
Invoke-Command -ArgumentList $destPath -scriptblock { Write-output \"New-Item -Path $destPath\"}
#New-Item -Path \\localhost\c$\temp

# $desPath n'est pas déclaré
Invoke-Command -ComputerName localhost -ArgumentList $destPath -scriptblock { Write-output \"New-Item -Path $destPath\"}
#New-Item -Path

#Sans clause Param, on adresse les valeurs de -Argumentlist via la variable automatique $Args
Invoke-Command -ComputerName localhost -ArgumentList $destPath -scriptblock { Write-output \"New-Item -Path $($args[0])\"}
#New-Item -Path \\localhost\c$\temp

#Avec une clause Param, on adresse la variable déclarée
Invoke-Command -ComputerName localhost -ArgumentList $destPath -scriptblock { param($Destpath) Write-output \"New-Item -Path $args[0]\"}
#New-Item -Path \\localhost\c$\temp

#indicateur de portée Using: PS fait la liaison automatiquement
#( il injecte la variable dans le scriptblock sur le distant )
Invoke-Command -ComputerName localhost -scriptblock { Write-output \"New-Item -Path $using:destPath\"}
#New-Item -Path \\localhost\c$\temp
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 5 mois #22510 par Anthony
Salut Laurent,

Merci pour ton aide, je prends note de ton aide mémoire, j'ai semble t-il résolu mon problème avec $using:destpath :

[code:1]Invoke-Command -ComputerName $computer.computer -Credential $cred -scriptblock {New-Item -Path $Using:destPath -ItemType file -value \"This is a test for testing scom service account.\" -name test-access.txt -force}[/code:1]

Vous en dites quoi ?

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

Plus d'informations
il y a 9 ans 5 mois #22511 par Laurent Dardenne
thony62 écrit:

Vous en dites quoi ?

Qu'il est préférable de commencer par le début :P

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 5 mois #22513 par Philippe
perso je préfère une de ces deux écritures :

[code:1]Invoke-Command -ComputerName $computer.computer -Credential $cred -ArgumentList $destPath -scriptblock {New-Item -Path $($args[0]) -ItemType file -value \"This is a test for testing scom service account.\" -name test-access.txt -force}

Invoke-Command -ComputerName $computer.computer -Credential $cred -ArgumentList $destPath -scriptblock {param($Destpath) New-Item -Path $Destpath -ItemType file -value \"This is a test for testing scom service account.\" -name test-access.txt -force}
[/code:1]

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

Plus d'informations
il y a 9 ans 5 mois #22514 par Anthony
Je sais que je suis un débutant :p, j'ai cherché sur le net et comme cela à fonctionné...et comme j'ai pas encore de connaissances approfondis sur le sujet...lol

En testant les lignes que tu viens de me donner, cela fonctionne aussi, juste que j'ai pour l'instant un peu de mal à saisir comment cela fonctionne mais je vais chercher...

En tout cas, bien merci messieurs pour votre aide, je risque de revenir à votre grand désespoir pour d'autres problèmes, mais j'espère aussi revenir pour aider les autres une fois que j'aurais des connaissances solides ;)

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

Plus d'informations
il y a 9 ans 5 mois #22516 par Philippe
j'avais déjà répondu sur un sujet identique ici

en gros d'abord tu passe la ou les variables par le parametre -ArgumentList
dans ton cas :
[code:1]Invoke-Command -ArgumentList $destPath [/code:1]

et apres dans le scriptblock tu lis la ou les ariables :
soit dans l'ordre ou tu les a donné dans ArgumentList
soit tu fais un passage de paramètre comme pour un script ou une fonction \"param (.....)\" que tu peut utilisé dans le scriptblock
dans ton cas :
[code:1]param($path_de_dest)[/code:1]
que tu peut réutilise ici :
[code:1]New-Item -Path $path_de_dest [/code:1]

au final c'est peut être plus visuel comme ça :
[code:1]Invoke-Command -ComputerName $computer.computer -Credential $cred -ArgumentList $destPath -scriptblock {
param($path_de_dest)
New-Item -Path $path_de_dest -ItemType file -value \"This is a test for testing scom service account.\" -name test-access.txt -force
}
[/code:1]<br><br>Message édité par: 6ratgus, à: 20/10/16 18:13

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

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