none
PowerShell: Récuperer tous les informations de ipconfig RRS feed

  • Question

  • Bonjour, 

    Je me permets de vous contacter, que je souhaite faire un petit script qui me permet d'avoir les informations de ma carte réseau à l'aide de ipconfig.

    j'ai trouvé cette commande mais je ne sais pas est ce que la bonne ou pas.
    PS C:\> Get-IPInfos 

    Merci pour vos réponse


    achraf

    • Déplacé Emile Supiot lundi 10 août 2015 12:31 déplacé de "Le parcours des professionnels de l’IT et Développeurs"
    jeudi 21 mai 2015 13:21

Réponses

  • param (
     [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [string[]]$ComputerName = $env:computername
    )
    process {
     foreach ($Computer in $ComputerName) {
      if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
       $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer | ? {$_.IPEnabled}
       foreach ($Network in $Networks) {
        $IPAddress  = $Network.IpAddress[0]
        $SubnetMask  = $Network.IPSubnet[0]
        $DefaultGateway = $Network.DefaultIPGateway
        $DNSServers  = $Network.DNSServerSearchOrder
        $MACAddress  = $Network.MACAddress
    	$DHCPServer  = $Network.DHCPServer
        $DNSDomain  = $Network.DNSDomainSuffixSearchOrder
        
    	$OutputObj  = New-Object -Type PSObject
        $OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
        $OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
        $OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
        $OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name DHCPServer -Value $DHCPServer
    	$OutputObj | Add-Member -MemberType NoteProperty -Name DNSDomain -Value $DNSDomain
    	$OutMail = $OutputObj | Out-String
        $OutMail
       }
      }
     }
    $user = "achraf@code42.fr"
    $pass = ConvertTo-SecureString -String 'mypassword' -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential $user, $pass
    
    $email = @{
                        To = "achraf@code42.fr"
                        From = "achraf@code42.fr"
                        Subject = "Auto-Test Script Windows"
                        Body = $OutMail
                        SmtpServer = "127.0.0.1"
                        #port = 587
                        Credential = $cred
                        #UseSsl = $true
                    }
                    
     Send-MailMessage @email 
     #-UseSsl
    }

    Voila, fonctionne de mon coté. J

    • Proposé comme réponse ncoutinho vendredi 22 mai 2015 08:06
    • Marqué comme réponse Emile Supiot lundi 10 août 2015 12:32
    vendredi 22 mai 2015 08:06

Toutes les réponses

  • Bonjour Habiba,

    IPCONFIG fonctionne sous Powershell. Que veux tu de plus ?

    Cordialement,

    jeudi 21 mai 2015 23:23
  • je veux avoir un script qui permet de me récuperer ces informations, et envoyer ce résultat par email!!

    achraf

    jeudi 21 mai 2015 23:25
  • Habiba,

    Le script sera exécuté depuis le poste dont tu souhaites avoir les informations, ou depuis une autre machine ?

    vendredi 22 mai 2015 02:06
  • Le script sera exécuté dans mon ordinateur, j'ai fais un script hier , avec ma fonction mail, mais je reçois aucun email, je pense faut rajouter quelque modif au niveau de mon script.

    # Script functional when i execute a code, i have a result in my terminal 
    
    [cmdletbinding()]
    param (
     [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [string[]]$ComputerName = $env:computername
    )            
    begin {}
    process {
     foreach ($Computer in $ComputerName) {
      if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
       $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer | ? {$_.IPEnabled}
       foreach ($Network in $Networks) {
        $IPAddress  = $Network.IpAddress[0]
        $SubnetMask  = $Network.IPSubnet[0]
        $DefaultGateway = $Network.DefaultIPGateway
        $DNSServers  = $Network.DNSServerSearchOrder
        $MACAddress  = $Network.MACAddress
    	$DHCPServer  = $Network.DHCPServer
        $DNSDomain  = $Network.DNSDomainSuffixSearchOrder
        
    	$OutputObj  = New-Object -Type PSObject
        $OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
        $OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
        $OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
        $OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name DHCPServer -Value $DHCPServer
    	$OutputObj | Add-Member -MemberType NoteProperty -Name DNSDomain -Value $DNSDomainSuffixSearchOrder
    	$OutputObj |
    	
       }
      }
     }
    }            
    end {}
    
    # function send email 
    $user = "achraf@code42.fr"
    $pass = ConvertTo-SecureString -String "mypassword" -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential $user, $pass
    
    $email = @{
                        To = "alerte@code42.fr"
                        From = "achraf@code42.fr"
                        Subject = "Auto-Test Script Windows"
                        #Body = $body
                        SmtpServer = "127.0.0.1"
                        #port = 587
                        Credential = $cred
                        #UseSsl = $true
                    }
                    
                    Send-MailMessage @email
                        #-UseSsl 
    voila le résultat de mon script dans le terminal.


    achraf

    vendredi 22 mai 2015 07:13
  • Est-ce que vous êtes sur de vos paramètres de connexion SMTP ?

    D’après le script vous avez donc un service SMTP sur la machine locale (127.0.0.1), sur le port 25 et/ou 587, et qui autorise les connexions authentifiées. Je vous suggère deja de lancer la commande Send-MailMessage en console pour vérifier le code retour du serveur de messagerie.


    Bruce Jourdain de Coutance - Consultant MVP Exchange http://blog.brucejdc.fr

    vendredi 22 mai 2015 07:41
  • Bonjour, 

    Ce qui concerne la configuration du SMTP, sa marche parfait, vu que j'ai d'autres scripts basique de test , qui m'envoie le rapport par mail. 

    par contre celui la, j'arrive même pas à avoir le résultat de test par email, juste au niveau du terminal.

    Surement, y'a des truques à rajouter au niveau du code genre $body=$result | Out-String, pour avoir la sortie vers email. Mais je n'arrive pas à le faire.

    Merci 




    achraf


    • Modifié HabibaAmina vendredi 22 mai 2015 07:47
    • Proposé comme réponse ncoutinho vendredi 22 mai 2015 08:05
    • Non proposé comme réponse ncoutinho vendredi 22 mai 2015 08:05
    vendredi 22 mai 2015 07:47
  • param (
     [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [string[]]$ComputerName = $env:computername
    )
    process {
     foreach ($Computer in $ComputerName) {
      if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
       $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer | ? {$_.IPEnabled}
       foreach ($Network in $Networks) {
        $IPAddress  = $Network.IpAddress[0]
        $SubnetMask  = $Network.IPSubnet[0]
        $DefaultGateway = $Network.DefaultIPGateway
        $DNSServers  = $Network.DNSServerSearchOrder
        $MACAddress  = $Network.MACAddress
    	$DHCPServer  = $Network.DHCPServer
        $DNSDomain  = $Network.DNSDomainSuffixSearchOrder
        
    	$OutputObj  = New-Object -Type PSObject
        $OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
        $OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value $DefaultGateway
        $OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value $DNSServers
        $OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
        $OutputObj | Add-Member -MemberType NoteProperty -Name DHCPServer -Value $DHCPServer
    	$OutputObj | Add-Member -MemberType NoteProperty -Name DNSDomain -Value $DNSDomain
    	$OutMail = $OutputObj | Out-String
        $OutMail
       }
      }
     }
    $user = "achraf@code42.fr"
    $pass = ConvertTo-SecureString -String 'mypassword' -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential $user, $pass
    
    $email = @{
                        To = "achraf@code42.fr"
                        From = "achraf@code42.fr"
                        Subject = "Auto-Test Script Windows"
                        Body = $OutMail
                        SmtpServer = "127.0.0.1"
                        #port = 587
                        Credential = $cred
                        #UseSsl = $true
                    }
                    
     Send-MailMessage @email 
     #-UseSsl
    }

    Voila, fonctionne de mon coté. J

    • Proposé comme réponse ncoutinho vendredi 22 mai 2015 08:06
    • Marqué comme réponse Emile Supiot lundi 10 août 2015 12:32
    vendredi 22 mai 2015 08:06
  • et voila ^^ c'est sa ce qu'on appelle la magie, je t'en remercie bcp hha , enfin je te jure j'ai trop galéré 3j avec ce script de ouf qui me bourre le crane.

    y'a une commande cdmtl super facile à récupérer tous les infos du réseaux celle du Get-NetIPConfiguration. donc j'ai pas arrivé à envoyer le résultat de cette commande par email, donc c'était obligé de faire sa à la mano comme une fonction :(.


    achraf

    vendredi 22 mai 2015 08:28