none
réunir 2 scripts RRS feed

  • שאלה

  • Bonjour j'ai 2 scripts en ps1 qui fonctionnent séparément et que je voudrais réunir en un seul mais là ça ne fonctionne pas.

    Le premier script modifie l'adresse ip et le second modifie le nom de la machine + redémarrage (voir ci-dessous)

    En fait quand je les mets ensemble dans un fichier ps1 alors la première partie du script fonctionne mais ensuite j'ai un message : " Get-WmiObject n'est pas reconnu comme..."

    Merci d'avance pour votre aide

    SCRIPT 1 :

    $defaultGw = "10.255.6.190"

    $ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])

    Write-host "  "

    Write-host "Nom actuel du poste :              $env:COMPUTERNAME"

    Write-host "  "

    Write-host "Adresse actuelle du poste :        $ipaddress"

    Write-host "  "

    $nbst = read-host "nouveau numéro de poste dans la salle"

    Write-host "  "

    ######################### base d'adresse nouvelle salle

    $newip = "10.1.40.$nbst"

    #########################

    Remove-NetIPAddress –InterfaceAlias Ethernet0 –IPAddress $ipaddress –PrefixLength 8 –DefaultGateway $defaultGw

    New-NetIPAddress –InterfaceAlias Ethernet0 –IPAddress $newip –PrefixLength 8 –DefaultGateway $defaultGw

    SCRIPT 2 :

    $ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])

    Write-host "  "

    Write-host "Nom actuel du poste :              $env:COMPUTERNAME"

    Write-host "  "

    Write-host "Adresse actuelle du poste :        $ipaddress"

    Write-host "  "

    $newname = read-host "nouveau nom de la station"

    function Set-ComputerName {

            param([string]$computerName="$newname")

    $computer = Get-WmiObject Win32_ComputerSystem

    $computer.Rename($computerName)

    $objServer = gwmi win32_operatingsystem

    $objServer.psbase.Scope.Options.EnablePrivileges = $true

    $objServer.reboot()

            }

    Set-ComputerName


    יום ראשון 22 ספטמבר 2019 08:17

כל התגובות

  • Bonjour,

    Déjà, enchainer ces 2 opérations n'est pas une bonne idée.

    - Changer l'adresse IP

    - Renommer l'ordinateur en passant par les couches réseaux (que l'on est en train de réinitialiser), évidemment, c'est gênant.

    Donc, mes conseils seraient:

    - d'utiliser set-NetIPAddress, au lieu de supprimer puis de recréer l'interface réseau:

    https://techcommunity.microsoft.com/t5/Windows-PowerShell/How-to-change-IP-Address-using-Set-NetIPAddress/m-p/289125

    - Au minimum de mettre un délai raisonnable dans le script entre les 2 opérations.

    - sinon d'inverser les 2 opérations en renommant l'ordinateur d'abord, puis changer l'adressage IP, puis redémarrer.

    A bientôt,


    Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Messaging 2016,MCSE:Server Infrastructure 2016(87 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate https://base.faqexchange.info

    יום ראשון 22 ספטמבר 2019 11:06
  • Bonjour,

    Pour renommer une machine, il existe déjà la commande powershell : rename-computer

    Rename-Computer -ComputerName "Srv01" -NewName "Server001" -DomainCredential Domain01\Admin01 -Force -Restart


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    יום ראשון 22 ספטמבר 2019 12:43
  • Merci beaucoup pour la réponse, je vais faire les modifications proposées, et même je pense que je vais laisser les 2 scripts séparés, ce qui impliquera de fait un délai mais également cela me permettra de ne faire qu'une des 2 opérations au besoin.

    Encore merci

    יום ראשון 22 ספטמבר 2019 18:48
  • Merci beaucoup pour la réponse, je vais faire des tests et essayer cette commande.
    יום ראשון 22 ספטמבר 2019 18:49
  • j'ai suivi les conseils et inversé les actions (voir ci-dessous) et ça marche!!!

    merci!!!!

    il me reste plus qu'à changer la façon de modifier l'ip comme conseillé...

    $defaultGw = "10.255.6.190"
    $ipaddress = $(ipconfig | where {$_ -match 'IPv4.+\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' } | out-null; $Matches[1])
    Write-host "  "
    Write-host "Nom actuel du poste :              $env:COMPUTERNAME"
    Write-host "  "
    Write-host "Adresse actuelle du poste :        $ipaddress"
    Write-host "  "
    $newname = read-host "nouveau nom de la station"
    Write-host "  "
    $nbst = read-host "nouveau numéro de poste dans la salle"
    ######################### base d'adresse nouvelle salle
    $newip = "10.1.40.$nbst"
    #########################


    function Set-ComputerName {


            param([string]$computerName="$newname")


    $computer = Get-WmiObject Win32_ComputerSystem
    $computer.Rename($computerName)
    $objServer = gwmi win32_operatingsystem
    $objServer.psbase.Scope.Options.EnablePrivileges = $true


            }


    Set-ComputerName




    Remove-NetIPAddress –InterfaceAlias Ethernet0 –IPAddress $ipaddress –PrefixLength 8 –DefaultGateway $defaultGw


    New-NetIPAddress –InterfaceAlias Ethernet0 –IPAddress $newip –PrefixLength 8 –DefaultGateway $defaultGw


    Sleep 10


    Restart-Computer

    יום ראשון 22 ספטמבר 2019 20:00