Question PS + wmic réseau + page web
- calvat
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 14 ans 10 mois #9512
par calvat
PS + wmic réseau + page web a été créé par calvat
Bonjour à tous 
Cela fais maintenant un peu moins d'un mois que je programme en Powershell et j'avoue que je commence à être assez fan. J'ai acheté le livre pour m'auto-former et je félicite vraiment les auteurs, le livre est génial et ne me quitte plus !
Je souhaite à chaque fois que celui qui lance un de mes scripts il n'est plus rien à faire qu'à entrer le login et le mot de passe. J'ai encore des choses à régler pour ce script.
Avant d'aller plus loin, je trouve le script lourd comme je l'ai écris. Du coup, je souhaiterais juste avoir des directions, des notions et ce qui est à revoir pour optimiser mon script
[code:1]#
# Listes des services sur les ordinateurs du réseau.
#
$service = ''
#Calcul des adresses réseau automatiquement.
$netlocal = get-wmiobject win32_networkadapterconfiguration | where {$_.ipenabled -eq \"true\"}
$ip = \"$($netlocal.ipaddress)\"
$ip = $ip.split()
$ip = $ip[0]
$masque = \"$($netlocal.ipsubnet)\"
$masque = $masque.split()
$masque = $masque[0]
#Définition de l'@ réseau et de la plage
$ip = $ip.split('.')
$masque = $masque.split('.')
$a = $ip[0] -band $masque[0]
$b = $ip[1] -band $masque[1]
$c = $ip[2] -band $masque[2]
$d = $ip[3] -band $masque[3]
#Adresse réseau
$netaddr = \"$a.$b.$c.$d\"
#Nombre de machine
$e = 255 - $masque[0]
$f = 255 - $masque[1]
$g = 255 - $masque[2]
$h = 255 - $masque[3]
#Wildcast
$hote = \"$e.$f.$g.$h\"
#calcul du nombre d'hôtes sur le réseau
$i = $a + $e
$j = $b + $f
$k = $c + $g
$l = $d + $h
#Adresse broadcast
$broadcast = \"$i.$j.$k.$l\"
#Premier hôte sur le réseau
$d += 1
$premier = \"$a.$b.$c.$d\"
#Dernier hôte sur le réseau
$l -= 1
$dernier = \"$i.$j.$k.$l\"
#Nombre de machine dans la plage
$e++
$f++
$g++
$h++
$nbrhote = $e * $f * $g * $h - 2
#
#Estimation du temps maximum du scan: 10 secondes x le nombre de machines
$temps = 10 * $nbrhote / 3600
write-host \"`nIl peut y avoir $nbrhote sur le réseau\"
write-host \"Estimation du temps maximum du scan : $temps heures\"
#
#Demande de l'identifiant et du mot de pase administrateur
$bureau = (get-childitem env:userprofile).value
$bureau += '\desktop'
$css = get-content $bureau\style.css
new-item -path $bureau -type directory -name 'Service_reseau' -force
remove-item $bureau\Service_reseau\*.html
$cred = $host.ui.PromptForCredential(\"Accès à distance\", \"Entrer votre identifitant et votre mot de passe administrateur :\", \"\", \"\"«»)
$ip = \"$a.$b.$c\"
$liens = ''
$ping = new-object system.net.networkinformation.ping
#Hote distant à scanner
for ($i = $d; $i -le $l; $i++) {
#
#Pourcentage d'avancement
$pourcent = $i / $l * 100
$pourcent = \"$pourcent\"
$pourcent = $pourcent.split('.')
$pourcent = $pourcent[0]
write-host \"`nPourcentage d'avancement: $pourcent%\"
$ipdst = \"$ip.$i\"
write-host \"Scan de $ipdst en cours...\"
$resultat = $ping.send(\"$ipdst\"«»)
if ($resultat.status -eq 'Success') {
#
#Génération des pages web
gwmi win32_service -computer $ipdst -credential $cred | sort-object name | convertto-html -property name, displayname, state -head $css -body \"<h2>Etat des services de $ipdst</h2>\" |
foreach {
if ($_ -match '<td>Running</td>')
{
$_ -replace '<tr>', '<tr bgcolor=green>'
}
elseif ($_ -match '<td>Stopped</td>')
{
$_ -replace '<tr>', '<tr bgcolor=red>'
}
else
{
$_
}
} | out-file $bureau\Service_reseau\$ipdst.html
$errorlevel = $?
$service += \"$(get-content $bureau\Service_reseau\$ipdst.html)\"
if ($errorlevel -eq 'True') {
$liens += \"<tr><td style=\"\"background-color: green\"\"><a href='$bureau\Service_reseau\$ipdst.html'>$ipdst<br></a>Connecté et le scan a réussit</td></tr> `n\"
}
else {
\"<p>$error[0]</p>\" > $bureau\Service_reseau\$ipdst.html
$liens += \"<tr><td style=\"\"background-color: red\"\"><a href='$bureau\Service_reseau\$ipdst.html'>$ipdst<br></a>Connecté mais le scan a échoué</td></tr> `n\"
}
}
if ($resultat.status -eq 'DestinationHostUnreachable') {
$liens += \"<tr><td>$ipdst<br>Non connecté</td></tr> `n\"
}
}
#
#Creation de la page web Acceuil
$page = @\"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"www.w3.org/1999/xhtml\" xml:lang=\"fr\" >
<head>
<title>Etats des ordinateurs.</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
<style type='text/css'>
body {
background-color: #92b1ff;
}
p {
padding-left: 2%;
border: 2px inset black;
}
td {
border: 2px inset black;
padding: 5px;
margin: 3px;
}
td a {
color: white;
text-decoration: none;
}
p a {
color: black;
text-decoration: none;
}
.menu {
float: left;
width: 10%;
}
.resultat {
border: 2px inset black;
width: 80%;
margin-left: 11%;
background-color: white;
position: fixed;
}
.resultat p {
border: none;
}
</style>
</head>
<body>
<p style=\"font-size: 200%; background-color: white;\"><a href=\"$bureau\Service_reseau\index.html\">Bienvenue dans l'interface de gestion des ordinateurs</a></p>
<div class=\"menu\">
<table style=\"background-color: white\">
$liens
</table>
</div>
<div class=\"resultat\">
<p>
Bonjour,<br><br>
Cette page a été généré grâce à un script powershell v2. Le script a été essayé sur Windows 7 Ultimate et Google chrome.
</p>
</div>
</body>
</html>
\"@ | out-file $bureau\Service_reseau\index.html
#
#Génération de chaque page par ip
$service = $service -split \"</html>\"
for ($i = 0; $i -le 20; $i++) {
$ipdst = \"$ip.$i\"
$contenu = $service[$i-1]
$page = @\"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"www.w3.org/1999/xhtml\" xml:lang=\"fr\" >
<head>
<title>Etats des ordinateurs.</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
<style type='text/css'>
body {
background-color: #92b1ff;
}
p {
border: 2px inset black;
}
td {
border: 2px inset black;
padding: 5px;
margin: 3px;
}
td a {
color: white;
text-decoration: none;
}
p a {
color: black;
text-decoration: none;
}
.menu {
float: left;
width: 10%;
}
.resultat {
border: 2px inset black;
width: 80%;
height: 80%;
overflow: scroll;
margin-left: 11%;
padding-left: 2%;
background-color: white;
position: fixed;
}
</style>
</head>
<body>
<p style=\"font-size: 200%; background-color: white; padding-left: 2%;\"><a href=\"$bureau\Service_reseau\index.html\">Bienvenue dans l'interface de gestion des ordinateurs</a></p>
<div class=\"menu\">
<table style=\"background-color: white\">
$liens
</table>
</div>
<div class=\"resultat\">
$contenu
</div>
</body>
</html>
\"@ | out-file $bureau\Service_reseau\$ipdst.html
}
sl $bureau\Service_reseau\
.\index.html
[/code:1]
Voici un aperçu de \"l'interface\"
nsa26.casimages.com/img/2011/04/28/110428111734776406.jpg
Merci et à bientôt
Message édité par: apex, à: 28/04/11 23:11<br><br>Message édité par: apex, à: 28/04/11 23:13
Cela fais maintenant un peu moins d'un mois que je programme en Powershell et j'avoue que je commence à être assez fan. J'ai acheté le livre pour m'auto-former et je félicite vraiment les auteurs, le livre est génial et ne me quitte plus !
Description du code: Le script a été écris sous ps v2. Le script doit détecter et calculer tous les paramètres selon votre réseau, scanner chaque ordinateurs pour trouver les services lancées ou non. On retrouve cela un peu dans le livre mais j'ai voulu développer un peu plus \"l'interface\" web.
Je souhaite à chaque fois que celui qui lance un de mes scripts il n'est plus rien à faire qu'à entrer le login et le mot de passe. J'ai encore des choses à régler pour ce script.
Avant d'aller plus loin, je trouve le script lourd comme je l'ai écris. Du coup, je souhaiterais juste avoir des directions, des notions et ce qui est à revoir pour optimiser mon script
[code:1]#
# Listes des services sur les ordinateurs du réseau.
#
$service = ''
#Calcul des adresses réseau automatiquement.
$netlocal = get-wmiobject win32_networkadapterconfiguration | where {$_.ipenabled -eq \"true\"}
$ip = \"$($netlocal.ipaddress)\"
$ip = $ip.split()
$ip = $ip[0]
$masque = \"$($netlocal.ipsubnet)\"
$masque = $masque.split()
$masque = $masque[0]
#Définition de l'@ réseau et de la plage
$ip = $ip.split('.')
$masque = $masque.split('.')
$a = $ip[0] -band $masque[0]
$b = $ip[1] -band $masque[1]
$c = $ip[2] -band $masque[2]
$d = $ip[3] -band $masque[3]
#Adresse réseau
$netaddr = \"$a.$b.$c.$d\"
#Nombre de machine
$e = 255 - $masque[0]
$f = 255 - $masque[1]
$g = 255 - $masque[2]
$h = 255 - $masque[3]
#Wildcast
$hote = \"$e.$f.$g.$h\"
#calcul du nombre d'hôtes sur le réseau
$i = $a + $e
$j = $b + $f
$k = $c + $g
$l = $d + $h
#Adresse broadcast
$broadcast = \"$i.$j.$k.$l\"
#Premier hôte sur le réseau
$d += 1
$premier = \"$a.$b.$c.$d\"
#Dernier hôte sur le réseau
$l -= 1
$dernier = \"$i.$j.$k.$l\"
#Nombre de machine dans la plage
$e++
$f++
$g++
$h++
$nbrhote = $e * $f * $g * $h - 2
#
#Estimation du temps maximum du scan: 10 secondes x le nombre de machines
$temps = 10 * $nbrhote / 3600
write-host \"`nIl peut y avoir $nbrhote sur le réseau\"
write-host \"Estimation du temps maximum du scan : $temps heures\"
#
#Demande de l'identifiant et du mot de pase administrateur
$bureau = (get-childitem env:userprofile).value
$bureau += '\desktop'
$css = get-content $bureau\style.css
new-item -path $bureau -type directory -name 'Service_reseau' -force
remove-item $bureau\Service_reseau\*.html
$cred = $host.ui.PromptForCredential(\"Accès à distance\", \"Entrer votre identifitant et votre mot de passe administrateur :\", \"\", \"\"«»)
$ip = \"$a.$b.$c\"
$liens = ''
$ping = new-object system.net.networkinformation.ping
#Hote distant à scanner
for ($i = $d; $i -le $l; $i++) {
#
#Pourcentage d'avancement
$pourcent = $i / $l * 100
$pourcent = \"$pourcent\"
$pourcent = $pourcent.split('.')
$pourcent = $pourcent[0]
write-host \"`nPourcentage d'avancement: $pourcent%\"
$ipdst = \"$ip.$i\"
write-host \"Scan de $ipdst en cours...\"
$resultat = $ping.send(\"$ipdst\"«»)
if ($resultat.status -eq 'Success') {
#
#Génération des pages web
gwmi win32_service -computer $ipdst -credential $cred | sort-object name | convertto-html -property name, displayname, state -head $css -body \"<h2>Etat des services de $ipdst</h2>\" |
foreach {
if ($_ -match '<td>Running</td>')
{
$_ -replace '<tr>', '<tr bgcolor=green>'
}
elseif ($_ -match '<td>Stopped</td>')
{
$_ -replace '<tr>', '<tr bgcolor=red>'
}
else
{
$_
}
} | out-file $bureau\Service_reseau\$ipdst.html
$errorlevel = $?
$service += \"$(get-content $bureau\Service_reseau\$ipdst.html)\"
if ($errorlevel -eq 'True') {
$liens += \"<tr><td style=\"\"background-color: green\"\"><a href='$bureau\Service_reseau\$ipdst.html'>$ipdst<br></a>Connecté et le scan a réussit</td></tr> `n\"
}
else {
\"<p>$error[0]</p>\" > $bureau\Service_reseau\$ipdst.html
$liens += \"<tr><td style=\"\"background-color: red\"\"><a href='$bureau\Service_reseau\$ipdst.html'>$ipdst<br></a>Connecté mais le scan a échoué</td></tr> `n\"
}
}
if ($resultat.status -eq 'DestinationHostUnreachable') {
$liens += \"<tr><td>$ipdst<br>Non connecté</td></tr> `n\"
}
}
#
#Creation de la page web Acceuil
$page = @\"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"www.w3.org/1999/xhtml\" xml:lang=\"fr\" >
<head>
<title>Etats des ordinateurs.</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
<style type='text/css'>
body {
background-color: #92b1ff;
}
p {
padding-left: 2%;
border: 2px inset black;
}
td {
border: 2px inset black;
padding: 5px;
margin: 3px;
}
td a {
color: white;
text-decoration: none;
}
p a {
color: black;
text-decoration: none;
}
.menu {
float: left;
width: 10%;
}
.resultat {
border: 2px inset black;
width: 80%;
margin-left: 11%;
background-color: white;
position: fixed;
}
.resultat p {
border: none;
}
</style>
</head>
<body>
<p style=\"font-size: 200%; background-color: white;\"><a href=\"$bureau\Service_reseau\index.html\">Bienvenue dans l'interface de gestion des ordinateurs</a></p>
<div class=\"menu\">
<table style=\"background-color: white\">
$liens
</table>
</div>
<div class=\"resultat\">
<p>
Bonjour,<br><br>
Cette page a été généré grâce à un script powershell v2. Le script a été essayé sur Windows 7 Ultimate et Google chrome.
</p>
</div>
</body>
</html>
\"@ | out-file $bureau\Service_reseau\index.html
#
#Génération de chaque page par ip
$service = $service -split \"</html>\"
for ($i = 0; $i -le 20; $i++) {
$ipdst = \"$ip.$i\"
$contenu = $service[$i-1]
$page = @\"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"www.w3.org/1999/xhtml\" xml:lang=\"fr\" >
<head>
<title>Etats des ordinateurs.</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
<style type='text/css'>
body {
background-color: #92b1ff;
}
p {
border: 2px inset black;
}
td {
border: 2px inset black;
padding: 5px;
margin: 3px;
}
td a {
color: white;
text-decoration: none;
}
p a {
color: black;
text-decoration: none;
}
.menu {
float: left;
width: 10%;
}
.resultat {
border: 2px inset black;
width: 80%;
height: 80%;
overflow: scroll;
margin-left: 11%;
padding-left: 2%;
background-color: white;
position: fixed;
}
</style>
</head>
<body>
<p style=\"font-size: 200%; background-color: white; padding-left: 2%;\"><a href=\"$bureau\Service_reseau\index.html\">Bienvenue dans l'interface de gestion des ordinateurs</a></p>
<div class=\"menu\">
<table style=\"background-color: white\">
$liens
</table>
</div>
<div class=\"resultat\">
$contenu
</div>
</body>
</html>
\"@ | out-file $bureau\Service_reseau\$ipdst.html
}
sl $bureau\Service_reseau\
.\index.html
[/code:1]
Voici un aperçu de \"l'interface\"
nsa26.casimages.com/img/2011/04/28/110428111734776406.jpg
Merci et à bientôt
La pièce jointe services.ps1 est absente ou indisponible
Message édité par: apex, à: 28/04/11 23:11<br><br>Message édité par: apex, à: 28/04/11 23:13
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- calvat
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 14 ans 10 mois #9524
par calvat
Réponse de calvat sur le sujet Re:PS + wmic réseau + page web
Je m'excuse par avance, je pense après coup avoir poster au mauvais endroit. Je pense que mon post serait plus approprié dans la section 'Entraide pour les débutants'
Merci
Merci
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- PS + wmic réseau + page web