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 :

Audit VM [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut Audit VM
    Bonjout à tous,

    Ceci est mon premier poste sur ce forum, malgré que je m'y sois baladé plusieurs fois.

    J'ouvre un topique car j'ai besoin d'aide sur un mini projet de script. J'ai fais de la programmation pendant mes études mais en 10 ans d'expérience professionnelle, je n'ai finalement pondu que des scripts très simple. Donc mon niveau de programmation est à rafraîchir sérieusement.

    Mon projet est de faire un audit de VM. Savoir si chaque VM est présent sous l'AD, ZCM et Appsens ect ...
    Dans un premier temps, le but est d'avoir un fichier Excel, avec une colonne pour l'AD, une pour ZCM ect. Dans chaque colonne est inscris le nom d'une VM, et si elle n'est pas présente dans un autre environnement, laissé un blanc. Ce qui donneria le résultat suivant : Nom : 09-03-2018 13-36-10.jpg
Affichages : 376
Taille : 52,1 Ko

    Je pense automatiser un export CSV sur chaque serveur, pour obtenir la liste des VM de chaque environnement sur un lecteur réseaux. Et ensuite, via un script powershell, insérer les données dans un tableau, à chaque colonne, un fichier CSV, les trier par ordre alphabétique, laisser un blanc pour chaque environnement ou la VM n'est pas présente, et mettre le résultat dans un fichier Excel.

    La ou j'ai besoin de piste, c'est :
    1-quelles fonctions vont me permettre de mettre les données dans un tableau (une colonne par environnement),
    2- comment laisser un blanc pour chaque VM non présente (cf capture fichier excel) -> condition d’écriture ? méthode de tri ? création de référentiel ?


    J'espère avoir été compréhensible,

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par Francky_bullet Voir le message
    1-quelles fonctions vont me permettre de mettre les données dans un tableau (une colonne par environnement),
    Le plus simple est de créer une CSV, si tu dois compléter un fichier Excel normé il faut utiliser Ole Automation, c'est à dire piloter Excel via des objets COM.

    Citation Envoyé par Francky_bullet Voir le message
    2- comment laisser un blanc pour chaque VM non présente (cf capture fichier excel) -> condition d’écriture ? méthode de tri ? création de référentiel ?
    Une chaine vide suffit, ex :
    Ensuite je ne suis pas sûr de comprendre si le point 2 est une suite de questions...

    En passant pour "non présente", absente ça marche aussi ;-)

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    il y a qq ressemblances il me semble avec cette discussion.
    Une VM est présente/absente dans un ou plusieurs (3) environnements.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Deux autres questions :

    je suppose qu'ici l'AD permet de construire la liste de référence des VMs et que ce n'est un environnement de déploiement comme les 2 autres (ZCM et Appsens) ?

    Lors de la construction de l'export des vms d'un environnement peux-tu rencontrer le pb de VM offline/ injoignable ou tu construis l'export à partir d'un référentiel spécifique à l'environnement ?

  5. #5
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    -> Laurent :
    Merci pour tes nombreuses infos.
    bonne idée la variable vide, ça devrai me servir.
    "Lors de la construction de l'export des vms d'un environnement peux-tu rencontrer le pb de VM offline/ injoignable ou tu construis l'export à partir d'un référentiel spécifique à l'environnement ?" Qu'il soit joignable ou non, la liste reste la même et c'est cella la que je veux comparer. Donc je ne pense pas être embêter si la VM est non joignable

    Le point 2 est une suite de méthode possible, ne sachant pas trop laquelle choisir.

  6. #6
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    Mon export de l'AD est presque terminée :

    get-adcomputer -ldapfilter "(name=w*)" -searchbase "OU=Virtuels,OU=Postes,DC=***,DC=****i,DC=*****" | FT name | out-file -filepath "c:\users\****\test.txt"

    Je bute juste sur un point, j’aimerai exclure les VM dont le nom commence par "w81", mais je n'arrive pas à rajouter cette conditions dans ma ligne de commande ...

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Francky_bullet Voir le message
    Je bute juste sur un point, j’aimerai exclure les VM dont le nom commence par "w81"
    Utilise une expression régulière :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Get-ADcomputer -ldapfilter "(name=w*)" -searchbase "OU=Virtuels,OU=Postes,DC=AMED,DC=pole-emploi,DC=intra" |
     Select -ExpandProperty Name |
     Where-object{$_ -notmatch '^w81'} |
     Out-File -filepath "c:\users\afpa1020\test.txt"
    Attention les cmdlets Format-XXX créent des objets de formatage dédiés à la console Powershell, avec ton code d'origine le résultat sera inexploitable.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Puisque tu as une liste de référence, voici une ébauche :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
     #Liste de référence provenant de l'AD ?
     #supposée sans doublon
    [string[]]$script:All_vms=@(
    'wgf497',
    'wk8542',
    'whhn03',
    'waarr4',
    'wca698'
    )
     
    [string[]]$ZCM_vm=@(
    'wgf497',
    'wk8542',
    'wca698',
    'wd3415',
    'wd3416'
    )
     
    [string[]]$AppSens_vm=
    @(
    'wgf497',
    'wk8542',
    'whhn03',
    'wd3415',
    'wd3417'
    )
     
    #requiert ps v5.0
    enum VMEnvironment { 
     ZCM 
     AppSens
    }
     
    #Les noms des environnements sont définis dans une énumération.
    $EnvironmentNames=@( [System.Enum]::GetValues([VMEnvironment]) )
     
    Function New-VMInfo{
     #crée un objet portant le nom de la VM et 
     # les noms des environnements à tester.
     #Note : dépend de l'énumération [VMEnvironment].
     
     param(
        [Parameter(Mandatory=$True,position=0)]
       [string]$Name
     )
     
      $Properties=@{
          PSTypeName='VMInfo';
          Name=$Name;
          isUnknown=$false #Par défaut la VM est présente dans la liste de référence.
          WriteErrorStream=$false # Propriété optionnel, facilite la visualisation des VMs inconnues dans la console
      }
     
      #Par défaut la VM n'existe pas dans tous les environnements déclarés. 
      #Les noms des propriétés sont identique aux noms des environnements.
      foreach ($Name in $EnvironmentNames)
      { $Properties.Add($Name,$false) }                
     
      [PSCustomObject]$Properties
    }# New-VMInfo
     
     
     #Hashtable de recherche d’occurrence.  
     #En fin de traitement elle contiendra tous les noms de VM rencontrés :
     # celles présentes dans la liste de référence et celles absentes (inconnues).  
    $script:Search_vm=@{}
     
    foreach ($vmName in $script:All_vms){
      #Le nom de VM est la clé de la hashtable à laquelle 
      # on associe un objet personnalisé.
     $script:Search_vm.Add($vmName, (New-VMInfo -Name $vmName))                   
    }
     
    Function Compare-Environnement{
      #Compare la liste des VMs d'un environnement avec la liste de référence
      #Attention dépendance sur $All_vms et $Search_vm 
     param (
      [string[]] $List,
     
      [VMEnvironment]$Environment
     )
     
      $Comparaison=Compare-Object -ReferenceObject $script:All_vms -DifferenceObject $List -IncludeEqual
      foreach ($Item in $Comparaison)
      {
        $Key=$Item.InputObject
        switch ($Item.SideIndicator) 
        {
         '==' {
                 #La vm est connue, valide sa présence dans l'environnement indiqué
                $script:Search_vm.$Key.$Environment=$True
                break;
              }
     
         #'<=' {
                 #La vm est connue, son absence dans l'environnement indiqué est déjà à $true
         #     }
     
         '=>' { 
                 #La vm est inconnue dans le liste de référence mais présente dans un environnement 
                 #on réutilise $Search_vm pour mémoriser cette information 
                if (-not $script:Search_vm.Contains($Key))
                {
     
                  $VM_Unknown=New-VMInfo -Name $Key
                  $VM_Unknown.isUnknown=$True
                  $VM_Unknown.$Environment = $VM_Unknown.WriteErrorStream=$True
                  $script:Search_vm.Add($Key, $VM_Unknown)
                  Write-Error "VM Inconnue:'$Key'"
               }
               else
               { 
                  #La vm est inconnue, on valide sa présence dans l'environnement indiqué
                 $script:Search_vm.$Key.$Environment=$True 
               }
              }
        }
      }
    } #Compare-Environnement
     
    Compare-Environnement -List $ZCM_vm -Environment 'ZCM'
    Compare-Environnement -List $AppSens_vm -Environment 'AppSens'
     
     #Récupère un tableau d'objets
    $Rapport=$Search_vm.GetEnumerator()|Foreach-Object {$_.Value}
    $Rapport
     
    #paramètre l'affichage des propriétés, toutes sauf WriteErrorStream 
    $AllPropertiesExcept='Name','isUnknown'+$EnvironmentNames
    Update-TypeData -TypeName VMInfo -DefaultDisplayPropertySet $AllPropertiesExcept 
    $Rapport
     
    #2 groupes connue et inconnue
    $Groupes=$Rapport|Group-object  -Property isUnknown
    $Groupes
     
    #fichier csv -> Excel
    $Rapport|Export-CSV 'c:\temp\Audit-Vm.txt' -Delimiter ';'
    Le contenu de $Rapport :
    Name isUnknown ZCM AppSens
    ---- --------- --- -------
    wgf497 False True True
    wd3417 True False True
    whhn03 False False True
    wk8542 False True True
    wd3415 True True True
    waarr4 False False False
    wd3416 True True False
    wca698 False True False
    J'ai ajouté la gestion de la propriété WriteErrorStream au cas où, mais ce n'est pas nécessaire si le fichier Excel te suffit.
    Et j'ai utilisé une énumération afin de faciliter l'ajout d'environnement, le code s'adapte au nb d'entrée.
    Enfin je ne sais pas si tu as une seule liste de référence provenant de l'AD ou plusieurs.

  9. #9
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    Merci pour la commande de l'extraction AD, c'est parfait.

    En revanche, je n'ai pas de liste de référence, et je me demandai si le fait d'en créer une pouvais m'aider. (pour la créer, je pensais additionner toute les VM de chaque environnement en enlevant les doublons)

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Francky_bullet Voir le message
    En revanche, je n'ai pas de liste de référence, et je me demandai si le fait d'en créer une pouvais m'aider. (pour la créer, je pensais additionner toute les VM de chaque environnement en enlevant les doublons)
    C'est ce que j'avais commencé à faire :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     #Construit la liste de toutes les VM présentes dans les 3 environnements
    [string[]]$vms =$AD_vm+$ZCM_vm+$AppSens_vm
     
     #Liste sans doublons et on ne tient pas compte de la casse: 'wgf497' est égale à 'WGf497'
    $Vms=[System.Collections.Generic.HashSet[String]]::New($vms,[StringComparer]::InvariantCultureIgnoreCase)
     
    # Cast en un tableau pour Compare-Object 
    [string[]]$All_vm=$Vms
    mais il y a, en théorie, le cas où un environnement déclare une VM qui n'est pas référencée (inconnue), une sorte d'installation 'hors norme'. La propriété isUnknown porte cette info.
    Avec la concaténation des toutes les VM de tous les environnements tu ne peux pas connaitre ces cas, juste celles présentes et absentes dans chaque environnement.

    Le cmdlet Compare-Object induit la présence d'une liste de référence, si tu n'utilises pas cette liste le switch ne gère qu'un seul cas, la présence de la VM.
    A toi de voir si c'est nécessaire, je ne connais ni ton fonctionnel ni ton infra :-)

  11. #11
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    C'est super, j'ai juste besoin de savoir sa présence ou non.

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Dans cas le même script épuré :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    [string[]]$script:AD_vm=@(
    'wgf497',
    'wk8542',
    'whhn03',
    'waarr4',
    'wca698'
    )
     
    [string[]]$ZCM_vm=@(
    'wgf497',
    'wk8542',
    'wca698',
    'wd3415',
    'wd3416'
    )
     
    [string[]]$AppSens_vm=
    @(
    'wgf497',
    'wk8542',
    'whhn03',
    'wd3415',
    'wd3417'
    )
     
     #Construit la liste de toutes les VM présentes dans les 3 environnements
    [string[]]$vms =$AD_vm+$ZCM_vm+$AppSens_vm
     #Liste sans doublons et on ne tient pas compte de la casse: 'wgf497' est égale à 'WGf497'
    $Vms=[System.Collections.Generic.HashSet[String]]::New($vms,[StringComparer]::InvariantCultureIgnoreCase)
     # Cast en un tableau pour Compare-Object 
    [string[]]$All_vms=$Vms
     
    #requiert ps v5.0
    enum VMEnvironment { 
     AD
     ZCM 
     AppSens
    }
     
    #Les noms des environnements sont définis dans une énumération.
    $EnvironmentNames=@( [System.Enum]::GetValues([VMEnvironment]) )
     
    Function New-VMInfo{
     #crée un objet portant le nom de la VM et 
     # les noms des environnements à tester.
     #Note : dépend de l'énumération [VMEnvironment].
     
     param(
        [Parameter(Mandatory=$True,position=0)]
       [string]$Name
     )
     
      $Properties=@{
          PSTypeName='VMInfo';
          Name=$Name;
      }
     
      #Par défaut la VM n'existe pas dans tous les environnements déclarés. 
      #Les noms des propriétés sont identique aux noms des environnements.
      foreach ($Name in $EnvironmentNames)
      { $Properties.Add($Name,$false) }                
     
      [PSCustomObject]$Properties
    }# New-VMInfo
     
     
     #Hashtable de recherche d'occurence.  
     #En fin de traitement elle contiendra tous les noms de VM rencontrés :
     # celles présentes dans la liste de référence et celles absentes (inconnues).  
    $script:Search_vm=@{}
     
    foreach ($vmName in $script:All_vms){
      #Le nom de VM est la clé de la hashtable à laquelle 
      # on associe un objet personnalisé.
     $script:Search_vm.Add($vmName, (New-VMInfo -Name $vmName))                   
    }
     
    Function Compare-Environnement{
      #Compare la liste des VMs d'un environnement avec la liste de référence
      #Attention dépendance sur $All_vms et $Search_vm 
     param (
      [string[]] $List,
     
      [VMEnvironment]$Environment
     )
     
      $Comparaison=Compare-Object -ReferenceObject $script:All_vms -DifferenceObject $List -IncludeEqual
      foreach ($Item in $Comparaison)
      {
        $Key=$Item.InputObject
        switch ($Item.SideIndicator) 
        {
         '==' {
                 #La vm est connue, valide sa présence dans l'environnement indiqué
                $script:Search_vm.$Key.$Environment=$True
                break;
              }
     
         #'<=' {
                 #La vm est connue, son absence dans l'environnement indiqué est déjà à $true
         #     }
     
         # '=>' { #La vm est inconnue dans le liste de référence mais présente dans un environnement }
        }
      }
    } #Compare-Environnement
     
    Compare-Environnement -List $AD_vm -Environment 'AD'
    Compare-Environnement -List $ZCM_vm -Environment 'ZCM'
    Compare-Environnement -List $AppSens_vm -Environment 'AppSens'
     
     #Récupère un tableau d'objets
    $Rapport=$Search_vm.GetEnumerator()|Foreach-Object {$_.Value}
    $Rapport
     
    #fichier csv -> Excel
    $Rapport|Export-CSV 'c:\temp\Audit-Vm.txt' -Delimiter ';'
    Il reste à implémenter une gestion d'erreur et l'affectation des listes à partir des environnements.

  13. #13
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    J'ai continué a avancé de mon côté, et j'aimerai appliquer ce que vous me dite, mais je ne comprends pas tout. Du coup, je vous fais un point sur la ou j'en suis :

    J'ai bien l'export des VM de chaque environnement dans un fichier
    Ensuite je créer une variable pour chaque environnement (contient la liste des VM de l'environnement)
    $AD = get-content AD.csv
    $ZCM = get-content zcm.csv
    ect ...

    Ensuite j’ai bien créer ma liste de référence de toute les VM en supprimant les doublons et en les triant par ordre alphabétique :
    $VM = $AD + $ZCM |sort-object -unique | out-file VM.txt

    Maintenant, j'aimerai tester pour chaque valeur de $VM la présence ou non dans $AD et le sortir dans une variable $VM.AD. Puis faire pareil pour ZCM dans la variables $VM.ZCM. Et mettre le résultat dans un fichier :
    1er colonne $VM : les VM de ref.
    2eme colonne $VM.AD : résultat des test de présence
    3ème colonne $VM.ZCM : nrésultat des test de présence


    Ca ressemblerai a ca :

    wdfrg true false
    wdrtt true true
    wdpkf false true

    ect ...


    Déjà, comment puis je tester la présence d'une variable dans un fichier ou une autre variable ?

    Merci

  14. #14
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Il me semble que le résultat donne déjà, sous réserve de test, les infos que tu recherches.

    Si tu souhaites les restructurer tu peux modifier le script ou créer une autre structure à partir du résultat :
    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
     
    $VM_AD=$Rapport|select Name,AD
    $VM_AD
     
    # Name      AD
    # ----      --
    # wgf497  True
    # wd3417 False
    # whhn03  True
    # wk8542  True
    # wd3415 False
    # waarr4  True
    # wd3416 False
    # wca698  True
     
    $VM_ZCM=$Rapport|select Name,ZCM
    #...
    Sous Powershell on parle d'objet, donc de propriété et pas de colonne, terme spécifique à Excel.
    J'ai donc un doute, à savoir si ce que tu souhaites faire maintenant est de structurer ton fichier Excel ?

  15. #15
    Membre habitué
    Homme Profil pro
    consultant infrastructure
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : consultant infrastructure
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Par défaut
    C'est bon, j'ai réussi à tester la présence ou nom de chaque VM de mon référentiel dans un autre fichier, je vous le met ici, des fois queca serve à qq1 :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #boucle qui scan toutes les valeurs contenu dans $VM ( mon référentiel de VM) dans chaque fichier ($AD pour les vm de l'AD, $ZCM pour les VM de m'evironnement ZCM ect ..), et retourne ok si il ets dedans et nok si il n’est pas dedans.
    foreach ($temp in $VM) {
        if ($AD | select-string -Pattern $temp) { add-content -path VM.AD.txt -value "ok"  } else {  add-content -path VM.AD.txt -value "nok" }
        if ($ZCM | select-string -Pattern $temp) { add-content -path VM.ZCM.txt -value "ok"  } else {  add-content -path VM.ZCM.txt -value "nok" }
        if ($Appsens | select-string -Pattern $temp) { add-content -path VM.Appsens.txt -value "ok"  } else {  add-content -path VM.Appsens.txt -value "nok" }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Audit de bases de données
    Par steph4263 dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 28/03/2020, 18h34
  2. Recherche de Logiciel d'audit de code java
    Par K-ro dans le forum Qualimétrie
    Réponses: 4
    Dernier message: 12/10/2004, 17h54
  3. Audit des performances d'une application Web
    Par jpg dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 16/09/2004, 10h45
  4. oracle 9i linux audit-trail
    Par mela dans le forum Administration
    Réponses: 2
    Dernier message: 04/08/2004, 22h42
  5. auditing
    Par romuald9999 dans le forum Administration
    Réponses: 10
    Dernier message: 28/07/2004, 10h15

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