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 :

Action d'une commande avec des pipes dans un fichier text [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Action d'une commande avec des pipes dans un fichier text
    Bonjour,

    Je suis novice en Powershell merci d'être indulgent.

    Afin de simplifier la gestion de mon Wsus , j'ai écris un script qui va permettre de nettoyer le serveur et de ranger les machines dans le bon groupe en fonction du nom du compte ordinateur.

    Les actions marchent parfaitement.

    Pour ces actions je voudrais un rapport.

    Pour le nettoyage aucun soucis par contre pour les deux autres commandes c'est plus corsé. Ceux sont les pipes qui bloquent et j'ai beau chercher sur le net je ne trouve pas de solution.

    Je ne pense pas que cette opération soit bien compliquée si quelqu’un peut me donner un coup de pouce s'il vous plait.

    J'ai fait deux versions de sortie mais même résultat => le fichier se crée mais il est vide.

    Alors que la sortie fonctionne bien si je la met avant " Add-WsusComputer "

    Merci beaucoup pour vos futures réponses , bonne journée.


    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $date = $(Get-Date -UFormat "%d-%m-%Y")
     
    Invoke-WsusServerCleanup -CleanupObsoleteComputers -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates > "C:\Nettoyage Serveur\Rapport\Rapport nettoyage $date.txt"
     
     
    Get-WsusComputer |  Where{ $_.FullDomainName -match  "wf" } | Add-WsusComputer -TargetGroupName "Fixes" -Verbose | Get-Process|Out-File "C:\Nettoyage Serveur\Rapport\Rapport Nouveaux Fixes $date.txt"  
     
     
    Get-WsusComputer |  Where{ $_.FullDomainName -match  "wp" } | Add-WsusComputer -TargetGroupName "Portables" -Verbose > "C:\Nettoyage Serveur\Rapport\Rapport Nouveaux Portables $date.txt"

  2. #2
    Membre habitué
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Points : 126
    Points
    126
    Par défaut
    Hello,

    l'utilisation des pipes requiert passer un ou plusieurs objets qui vont servir à la commande suivante. Pas sur que ce que retourne Add-WsusComputer soit utilisable par Get-Process? Je pars sur le principe que Get-Process accepte une liste de computer names pour récupérer leurs process info.

    Je commencerais par casser tout ça et voir ce que chaque commande retourne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fixes = Get-WsusComputer |  Where{ $_.FullDomainName -match  "wf" }
    au passage, c'est pas mieux de faire ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fixes = Get-WsusComputer -NameIncludes "wf"
    Ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resultat = $fixes | Add-WsusComputer -TargetGroupName "Fixes" -Verbose 
    
    $resultat
    Et si $resultat contient bien une liste de machines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat | Get-Process|Out-File "C:\Nettoyage Serveur\Rapport\Rapport Nouveaux Fixes $date.txt"  -Force
    Le -force à la fin faut l'ajouter car sans ça si le fichier de sortie existe, la commande ne le remplacera pas. En fait le souci vient peut-être de là.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Merci beaucoup de votre réponse.

    Malheureusement toujours le même problème le fichier est vide , la variable $resultat ne prend pas d'informations.

    Dois-je en conclure que les informations ne sont pas exploitables ? dommage ...

    Bonne journée.

  4. #4
    Membre habitué
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Points : 126
    Points
    126
    Par défaut
    Est-ce que la variable $fixes est vide aussi?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    $fixes me retourne bien les informations. (toutes les machines dont le nom continent "wf")

    Je cherche un moyen d'avoir uniquement les machines mise dans le bon groupe à l'instant T.

    Hors je ne pense pas utiliser la bonne méthode car même si il était possible d'extraire les infos de la commande Add-WsusComputer , il me retournerai toute les machines.

    En effet après divers tests je me suis aperçu que mon script brasse toutes les machines sur le Wsus , donc même les machines déjà présentes dans le bon groupe.

    Pensez-vous que c'est possible de mettre en place un paramètre qui isolerai uniquement les machines qui sont dans le groupe par défaut "ordinateur non attribués " et déplacer dans le bon groupe ?

    Merci beaucoup pour votre aide.

  6. #6
    Membre habitué
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Points : 126
    Points
    126
    Par défaut
    Oui, ceci devrait filtrer à la source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fixes = Get-WsusComputer -NameIncludes "wf"
    D'ailleurs l'exemple technet montre cette utilisation avec l'utilisation du pipe.

    https://technet.microsoft.com/en-us/.../hh826159.aspx

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    C'est bon !!! j'ai trouvé un grand merci à toi mickyballadelli

    Je partage si ça peut être utile à quelqu'un.

    Bonne journée

    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
     
    $date = $(Get-Date -UFormat "%d-%m-%Y")
     
    Invoke-WsusServerCleanup -CleanupObsoleteComputers -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates > "C:\Nettoyage Serveur\Rapport\Rapport nettoyage $date.txt"
     
     
    $fixes = Get-WsusComputer -ComputerTargetGroups "Ordinateurs non attribués" -NameIncludes "wf"
     
    $fixes > "C:\Nettoyage Serveur\Rapport\Rapport Nouveaux Fixes $date.txt"  
     
    $fixes | Add-WsusComputer -TargetGroupName "Fixes" -Verbose 
     
     
    $portables = Get-WsusComputer -ComputerTargetGroups "Ordinateurs non attribués" -NameIncludes "wp"
     
    $portables > "C:\Nettoyage Serveur\Rapport\Rapport Nouveaux Portables $date.txt"
     
    $portables | Add-WsusComputer -TargetGroupName "Portables" -Verbose

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2012, 18h14
  2. [Système/Fichiers/API] Lancé une commande avec des privilèges
    Par gandf dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/07/2010, 23h35
  3. Accéder à une page avec des paramètres dans l'url
    Par *alexandre* dans le forum JSF
    Réponses: 3
    Dernier message: 11/03/2009, 20h53
  4. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 12h13
  5. Prbleme de liaison avec des doublons dans le fichier lié.
    Par krak70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/10/2005, 11h03

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