Question
Lister une application
- Damien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 9 ans 8 mois #22271
par Damien
Lister une application a été créé par Damien
Bonjour,
Je dois lister une appli et dire si oui ou non elle est présente sur des serveurs.
J'ai essayé dans ce script de me ressortir un résultat dans le fichier Result.txt mais sans succès, il me créer ce fichier mais il est vide.
Avait vous une idée, une proposition ?
Merci d'avance
Message édité par: DrMacabre, à: 9/09/16 20:44<br><br>Message édité par: DrMacabre, à: 9/09/16 20:46
Je dois lister une appli et dire si oui ou non elle est présente sur des serveurs.
J'ai essayé dans ce script de me ressortir un résultat dans le fichier Result.txt mais sans succès, il me créer ce fichier mais il est vide.
Avait vous une idée, une proposition ?
Merci d'avance
Message édité par: DrMacabre, à: 9/09/16 20:44<br><br>Message édité par: DrMacabre, à: 9/09/16 20:46
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 9 ans 8 mois #22272
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Lister une application
DrMacabre écrit:
Oui, une. Pouvoir consulter le codeAvait vous une idée, une proposition ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Damien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 9 ans 8 mois #22273
par Damien
Réponse de Damien sur le sujet Re:Lister une application
ça c'est le script qui fonctionne :
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-host \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-host \"le service hp insight agent n'est pas installé sur $server\"
}
}
[/code:1]
Et ça s'est un essaie, pour essayer de mettre le résultat dans le fichier résult.txt
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
$Pathfile = \"E:\Pro\Tools\Listening\Result.txt\"
$total = @() # initialise la valeur à une table vide
foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-host \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-host \"le service hp insight agent n'est pas installé sur $server\"
}
}
set-Content -path $Pathfile -Value $total # Modifie et ré-écrie le contenu
[/code:1]ça y ai je l'ai mis, dsl
Message édité par: DrMacabre, à: 9/09/16 20:46<br><br>Message édité par: DrMacabre, à: 9/09/16 21:18
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-host \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-host \"le service hp insight agent n'est pas installé sur $server\"
}
}
[/code:1]
Et ça s'est un essaie, pour essayer de mettre le résultat dans le fichier résult.txt
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
$Pathfile = \"E:\Pro\Tools\Listening\Result.txt\"
$total = @() # initialise la valeur à une table vide
foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-host \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-host \"le service hp insight agent n'est pas installé sur $server\"
}
}
set-Content -path $Pathfile -Value $total # Modifie et ré-écrie le contenu
[/code:1]ça y ai je l'ai mis, dsl
Message édité par: DrMacabre, à: 9/09/16 20:46<br><br>Message édité par: DrMacabre, à: 9/09/16 21:18
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 9 ans 8 mois #22274
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Lister une application
Ton script doit émettre les données vers le pipeline, là il les envoie vers l'écran.
Utilise Write-Output au lieu de Write-Host.
Ensuite le Set-Content purrait être rattaché, via le caractère |, à ton traitement (le foreach), soit le foreach doit récupérer ses données, les appels à write-output, dans la variable $Total.
Ainsi ton appel à Set-Content fonctionnera.
Utilise Write-Output au lieu de Write-Host.
Ensuite le Set-Content purrait être rattaché, via le caractère |, à ton traitement (le foreach), soit le foreach doit récupérer ses données, les appels à write-output, dans la variable $Total.
Ainsi ton appel à Set-Content fonctionnera.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Damien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 9 ans 8 mois #22275
par Damien
Réponse de Damien sur le sujet Re:Lister une application
[code:1]
$servers = get-content -path C:\Servers.txt
$Pathfile = \"C:\Result.txt\"
$total = @() # initialise la valeur à une table vide
foreach ($server in $servers | set-Content -path $Pathfile -Value $total)# le Set-content Modifie et ré-écrie le contenu
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-output \"le service hp insight agent n'est pas installé sur $server\"
}
}
[/code:1]
J'ai essayé de faire ce que tu as dit, mais j'ai une erreur.
En même temps j'ai pas très bien compris :
\"Ensuite le Set-Content pourrait être rattaché, via le caractère |, à ton traitement (le foreach), soit le foreach doit récupérer ses données, les appels à write-output, dans la variable $Total.\"
En sortie je souhaiterai que dans le fichier Result.txt ou même dans un CSV ça serait mieux
. Ca me dise le service hp insight.... (n')est (pas) installé sur tel serveur. Ligne suivante : le serveur.... (n')est (pas) insatllé sur tel serveur.
Merci de ton aide
$servers = get-content -path C:\Servers.txt
$Pathfile = \"C:\Result.txt\"
$total = @() # initialise la valeur à une table vide
foreach ($server in $servers | set-Content -path $Pathfile -Value $total)# le Set-content Modifie et ré-écrie le contenu
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-output \"le service hp insight agent n'est pas installé sur $server\"
}
}
[/code:1]
J'ai essayé de faire ce que tu as dit, mais j'ai une erreur.
En même temps j'ai pas très bien compris :
\"Ensuite le Set-Content pourrait être rattaché, via le caractère |, à ton traitement (le foreach), soit le foreach doit récupérer ses données, les appels à write-output, dans la variable $Total.\"
En sortie je souhaiterai que dans le fichier Result.txt ou même dans un CSV ça serait mieux
Merci de ton aide
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 9 ans 8 mois #22276
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Lister une application
DrMacabre écrit:
, c'était pour que tu creuses un peu de ton côté.
En même temps je t'ai dit une ânerie par rapport à ton code car l'instruction foreach ne peut être utilisée directement avec le pipeline.
Il faut utiliser le cmdlet Foreach-Object ou adapter le code :
[code:1]
# 2 éléments.
$Message=@('OK','Erreur')
$(Foreach ($I in 1..6){
#Booléen
$isPair=($i%2) -eq 0
#Un booléen a 2 valeurs ...
Write-output \"Serveur $i = $($message[$isPair])\"
})|Set-Content c:\temp\Test.txt
type c:\temp\Test.txt
[/code:1]
Cela fonctionne en groupant l'instruction avec $(), mais ce n'est pas terrible comme écriture :-/
Avec le Foreach-Object :
[code:1]
get-content -path E:\Pro\Tools\Listening\Servers.txt|
foreach-Object {
$Serveur=$_
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-Output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-Output \"le service hp insight agent n'est pas installé sur $server\"
}
}|Set-Content c:\temp\Test2.txt
type c:\temp\Test2.txt
[/code:1]
Construction classique.
Sinon utiliser la variable intermédiaire $Total:
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
$Pathfile = \"E:\Pro\Tools\Listening\Result.txt\"
$Total=foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-output \"le service hp insight agent n'est pas installé sur $server\"
}
}
set-Content -path $Pathfile -Value $total
type $Pathfile
[/code:1]
Pour le csv, mieux vaut y insérer uniquement le nom du serveur, le nom du service et le status du service, ensuite créer une fonction pour le formatage/affichage.
Ainsi tu peux filtrer la liste complète sur le status :
[code:1]
$servers=1..4
foreach ($server in $servers)
{
echo \"Serveur : $server\"
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output (New-Object PSObject -Property @{Server=$Server;ServiceName='cqmgserv';Installé=$True})}
}
catch
{
write-output (New-Object PSObject -Property @{Server=$Server;ServiceName='cqmgserv';Installé=$false})
}
}
[/code:1]
En même temps j'ai pas très bien compris :
En même temps je t'ai dit une ânerie par rapport à ton code car l'instruction foreach ne peut être utilisée directement avec le pipeline.
Il faut utiliser le cmdlet Foreach-Object ou adapter le code :
[code:1]
# 2 éléments.
$Message=@('OK','Erreur')
$(Foreach ($I in 1..6){
#Booléen
$isPair=($i%2) -eq 0
#Un booléen a 2 valeurs ...
Write-output \"Serveur $i = $($message[$isPair])\"
})|Set-Content c:\temp\Test.txt
type c:\temp\Test.txt
[/code:1]
Cela fonctionne en groupant l'instruction avec $(), mais ce n'est pas terrible comme écriture :-/
Avec le Foreach-Object :
[code:1]
get-content -path E:\Pro\Tools\Listening\Servers.txt|
foreach-Object {
$Serveur=$_
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-Output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-Output \"le service hp insight agent n'est pas installé sur $server\"
}
}|Set-Content c:\temp\Test2.txt
type c:\temp\Test2.txt
[/code:1]
Construction classique.
Sinon utiliser la variable intermédiaire $Total:
[code:1]
$servers = get-content -path E:\Pro\Tools\Listening\Servers.txt
$Pathfile = \"E:\Pro\Tools\Listening\Result.txt\"
$Total=foreach ($server in $servers)
{
echo $server
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output \"le service hp insight agent est installé sur $server\" }
}
catch
{
write-output \"le service hp insight agent n'est pas installé sur $server\"
}
}
set-Content -path $Pathfile -Value $total
type $Pathfile
[/code:1]
Pour le csv, mieux vaut y insérer uniquement le nom du serveur, le nom du service et le status du service, ensuite créer une fonction pour le formatage/affichage.
Ainsi tu peux filtrer la liste complète sur le status :
[code:1]
$servers=1..4
foreach ($server in $servers)
{
echo \"Serveur : $server\"
try
{ if(get-service -name cqmgserv -computername $server -ErrorAction stop)
{ write-output (New-Object PSObject -Property @{Server=$Server;ServiceName='cqmgserv';Installé=$True})}
}
catch
{
write-output (New-Object PSObject -Property @{Server=$Server;ServiceName='cqmgserv';Installé=$false})
}
}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lister une application