IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

PowerCLI - Condition '-like'


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    et systeme
    Inscrit en
    Décembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : et systeme

    Informations forums :
    Inscription : Décembre 2021
    Messages : 9
    Points : 8
    Points
    8
    Par défaut PowerCLI - Condition '-like'
    Bonjour à tous,

    Je bloque depuis des heures sur un bout de code....

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $vm = Get-VM 
                $pfvm = "pfsense_$userAD"
                for($j=0; $j -le $vm.count; $j++){
     
     
                    $pfEntity = $vm.name[$j] #dans le tableau un des indice doit correspondre au la chaine "pfsense_$userAD" 
                    if($pfEntity -like $pfvm){ #c'est ici que ça bloque
                        New-VIPermission -Principal $userPermission -Role VirtualMachineUser -Entity $vm.Name[$j]
                        }
     
                }

    $userAD contient une chaine de caractères, $userPermission contient le nom d'un utilisateur.

    Je comprends pas pourquoi la condition du if ne passe pas....

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bonjour,

    Sans trop comprendre le code peut être comme ceci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $vm = Get-VM
    $pfvm = "pfsense_$userAD"
    for ($j = 0 ; $j -le $vm.Count ; $j++)
    {
        $pfEntity = $vm[$j].Name
        if($pfEntity -like $pfvm)
        {
            New-VIPermission -Principal $userPermission -Role VirtualMachineUser -Entity $vm[$j].Name
        }
    }

    Si ça fonctionne tu peux raccourcir ainsi
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-VM | Where-Object {$_.Name -like "pfsense_$userAD"} | ForEach-Object {New-VIPermission -Principal $userPermission -Role VirtualMachineUser -Entity $_.Name}

    PS1 : -eq serait surement préférable a -like mais je n'ai pas tout les entrants
    PS2 : Tu pourrais aussi efficacement utiliser un foreach à la place d'un for

  3. #3
    Futur Membre du Club
    Homme Profil pro
    et systeme
    Inscrit en
    Décembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : et systeme

    Informations forums :
    Inscription : Décembre 2021
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci, pour votre réponse.

    le problème était tout autre et j'ai réussi à trouver la solution.


    Mon objectif est le déploiement de machine virtuel sur des hôtes ESXI administré par vcenter server (VMWare), tout en utilisant le powercli via powershell.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ok, peut être que la solution pourrait intéresser quelqu'un d'autre.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    et systeme
    Inscrit en
    Décembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : et systeme

    Informations forums :
    Inscription : Décembre 2021
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
     
     
    $template = Get-Template -Name 'pfsense clone'       #créer une variable de modèle pour une VM 
    $user = Get-VIAccount -Domain domaine.lan           # les compte utilisateur du domaine sont mis dans la variable user 
     
     
      for($i=0; $i -le $user.Count; $i++){
     
        if (($user.description[$i] -notlike ' ') -and ($user.description[$i] -notlike '') -and ($user.description[$i] -like "test*")){
            $userAD= $user.description[$i]
            $userPermission = $user.name[$i]
            $vswtich = New-VirtualSwitch -VMHost 10.117.22.131 -Name "VSwitch_$userAD" 
            $lan_user = New-VirtualPortGroup -VirtualSwitch $vswtich -Name "Lan_$userAD"
            new-VM -VMHost 10.117.22.131 -Name "pfsense_$userAD" -Template $template -Datastore datastore -NetworkName Wan.131, $lan_user  #créer la nouvelle VM avec -Name "pfsense_$userAD" (il y a un espace en trop en fin de chaine) 
     
     
     
     
     
            #-------DROIT UTILISATEUR-------#
            if($user.description[$i] -like "test*"){
                New-VIPermission -Principal $userPermission -Role VirtualMachineUser -Entity "pfsense_$userAD".Trim(' ')     
                }
     
            }
    }


    je bloquais à la ligne 21 - 22 au niveau du if ça passait mais l'erreur était au niveau de -Entity (ligne 22) il ne reconnaissais pas la chaine "pfsense_$userAD". -Entity doit avoir comme valeur le nom d'une VM mais dans la variable $UserAD un espace en fin de chaine ce créer automatiquement .... la solution était de le supprimer avec le .trim(' ')

Discussions similaires

  1. [XL-2016] Condition, Like, Font.Bold
    Par acadraa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2020, 15h13
  2. Réponses: 3
    Dernier message: 12/02/2018, 14h47
  3. Procédure: Utiliser un paramètre dans une condition like.
    Par jeffriz06 dans le forum Développement
    Réponses: 1
    Dernier message: 08/06/2017, 11h15
  4. requête avec 2 conditions like %truc%
    Par mims1664 dans le forum Requêtes
    Réponses: 3
    Dernier message: 06/01/2011, 18h10
  5. Condition LIKE : sélection de chaine
    Par Moustico dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/05/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo