Question
[résolu]condition if
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 4 mois #16686
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:condition if
arsoul écrit:
Pour moi c'est redondant, mais si tu souhaites renforcer ainsi sa compréhension pourquoi pas.
Ceci devrais te convenir :
[code:1]
c:\users\toto\scriptB -Normalisation -Windows2008
#scriptB
[CmdletBinding(DefaultParameterSetName = \"Nothing\"«»)]
param (
#Traitements
[Parameter(ParameterSetName=\"Normalisation\"«»)]
[switch] $Normalisation,
[Parameter(ParameterSetName=\"PostInstallation\"«»)]
[switch] $PostInstallation,
#Cibles
[switch] $WindowsSeven,
[switch] $Windows2008
)
$PSCmdlet.WriteDebug(\"Traitement à effectuer : $($PsCmdlet.ParameterSetName)\"«»)
if ($PsCmdlet.ParameterSetName -eq 'Nothing')
{ Throw \"Aucun paramètrage. Veuillez spécifier un traitement et une cible.\" }
if ( ($WindowsSeven -and $Windows2008) -or (-not $WindowsSeven -and -not $Windows2008))
{ Throw \"Veuillez spécifier une cible et une seule.\" }
if(($Windows2008 -and ($Normalisation -or $PostInstallation)))
{
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
[/code:1]
Tu fais ce que tu veuxje préfère tester avec un if si les valeurs sont correct pour exécuter le bloc de commandes.
Pour moi c'est redondant, mais si tu souhaites renforcer ainsi sa compréhension pourquoi pas.
Ceci devrais te convenir :
[code:1]
c:\users\toto\scriptB -Normalisation -Windows2008
#scriptB
[CmdletBinding(DefaultParameterSetName = \"Nothing\"«»)]
param (
#Traitements
[Parameter(ParameterSetName=\"Normalisation\"«»)]
[switch] $Normalisation,
[Parameter(ParameterSetName=\"PostInstallation\"«»)]
[switch] $PostInstallation,
#Cibles
[switch] $WindowsSeven,
[switch] $Windows2008
)
$PSCmdlet.WriteDebug(\"Traitement à effectuer : $($PsCmdlet.ParameterSetName)\"«»)
if ($PsCmdlet.ParameterSetName -eq 'Nothing')
{ Throw \"Aucun paramètrage. Veuillez spécifier un traitement et une cible.\" }
if ( ($WindowsSeven -and $Windows2008) -or (-not $WindowsSeven -and -not $Windows2008))
{ Throw \"Veuillez spécifier une cible et une seule.\" }
if(($Windows2008 -and ($Normalisation -or $PostInstallation)))
{
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- lege
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 80
- Remerciements reçus 0
il y a 10 ans 4 mois #16687
par lege
Réponse de lege sur le sujet Re:condition if
par contre je n'arrive pas à l'appeler
c:\users\toto\scriptb test-param -normalisation -windows2008
ou
c:\users\toto\scriptb -normalisation -windows2008
j'excute bien la commande mais rien ne se passe, je ne sais pas d'ou ça vient
c:\users\toto\scriptb test-param -normalisation -windows2008
ou
c:\users\toto\scriptb -normalisation -windows2008
j'excute bien la commande mais rien ne se passe, je ne sais pas d'ou ça vient
Connexion ou Créer un compte pour participer à la conversation.
- lege
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 80
- Remerciements reçus 0
il y a 10 ans 4 mois #16688
par lege
Réponse de lege sur le sujet Re:condition if
quand je l’exécute directement à partir du script cela fonctionne
[code:1]
Test-Param -Normalisation -Windows2008
Function Test-Param {
[CmdletBinding(DefaultParameterSetName = \"Nothing\"«»)]
param (
#Traitements
[Parameter(ParameterSetName=\"Normalisation\"«»)]
[switch] $Normalisation,
[Parameter(ParameterSetName=\"PostInstallation\"«»)]
[switch] $PostInstallation,
#Cibles
[switch] $WindowsSeven,
[switch] $Windows2008
)
$PSCmdlet.WriteDebug(\"Traitement à effectuer : $($PsCmdlet.ParameterSetName)\"«»)
if ($PsCmdlet.ParameterSetName -eq 'Nothing')
{Throw \"Aucun paramètrage. Veuillez spécifier un traitement et une cible.\"}
if ( ($WindowsSeven -and $Windows2008) -or (-not $WindowsSeven -and -not $Windows2008))
{ Throw \"Veuillez spécifier une cible et une seule.\" }
if((($Windows2008) -and ($Normalisation -or $PostInstallation)))
{
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
}
[/code:1]
mais à partir de l’exécutable powershell
[code:1]
PS C:\Users\toto> .\testparam.ps1 Test-param -Normalisation -Windows2008
Test-Param : Le terme « Test-Param » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès e
Au caractère C:\Users\toto\testparam.ps1:1 : 1
+ Test-Param -Normalisation -Windows2008
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Test-Param:«»String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
[/code:1]<br><br>Message édité par: arsoul, à: 20/12/13 16:20
[code:1]
Test-Param -Normalisation -Windows2008
Function Test-Param {
[CmdletBinding(DefaultParameterSetName = \"Nothing\"«»)]
param (
#Traitements
[Parameter(ParameterSetName=\"Normalisation\"«»)]
[switch] $Normalisation,
[Parameter(ParameterSetName=\"PostInstallation\"«»)]
[switch] $PostInstallation,
#Cibles
[switch] $WindowsSeven,
[switch] $Windows2008
)
$PSCmdlet.WriteDebug(\"Traitement à effectuer : $($PsCmdlet.ParameterSetName)\"«»)
if ($PsCmdlet.ParameterSetName -eq 'Nothing')
{Throw \"Aucun paramètrage. Veuillez spécifier un traitement et une cible.\"}
if ( ($WindowsSeven -and $Windows2008) -or (-not $WindowsSeven -and -not $Windows2008))
{ Throw \"Veuillez spécifier une cible et une seule.\" }
if((($Windows2008) -and ($Normalisation -or $PostInstallation)))
{
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
}
[/code:1]
mais à partir de l’exécutable powershell
[code:1]
PS C:\Users\toto> .\testparam.ps1 Test-param -Normalisation -Windows2008
Test-Param : Le terme « Test-Param » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès e
Au caractère C:\Users\toto\testparam.ps1:1 : 1
+ Test-Param -Normalisation -Windows2008
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Test-Param:«»String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
[/code:1]<br><br>Message édité par: arsoul, à: 20/12/13 16:20
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 4 mois #16689
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:condition if
arsoul écrit:
Active le flux de debug :
[code:1]$DebugPreference='continue'[/code:1]
Que voudrais-tu qu'il se passe ?
Tu veux dire que rien ne s'affiche ?j'exécute bien la commande mais rien ne se passe
Active le flux de debug :
[code:1]$DebugPreference='continue'[/code:1]
Que voudrais-tu qu'il se passe ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 4 mois #16690
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:condition if
Reprend mon post de 15h58.
Dans ton répertoire, copie dans un fichier .ps1 le script B.
Dans ton répertoire, copie dans un fichier .ps1 le script B.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- lege
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 80
- Remerciements reçus 0
il y a 10 ans 4 mois #16691
par lege
Réponse de lege sur le sujet Re:condition if
oui effectivement, dans le script de 15h58 ca fonctionne
mais ce que j'essaye de faire c'est appeler le script B sans que la commande qui le permet soit dedans
il faudrait que j'exécute la commande à partir d'un powershell pour appeler le script B
Message édité par: arsoul, à: 20/12/13 16:25<br><br>Message édité par: arsoul, à: 20/12/13 16:26
mais ce que j'essaye de faire c'est appeler le script B sans que la commande qui le permet soit dedans
il faudrait que j'exécute la commande à partir d'un powershell pour appeler le script B
Message édité par: arsoul, à: 20/12/13 16:25<br><br>Message édité par: arsoul, à: 20/12/13 16:26
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.092 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [résolu]condition if