none
Powershell - Disque Dur Externe RRS feed

  • Question

  • Bonjour,

    Je souhaite retrouver toute les informations (lettre de disque, model, etc..) d'un disque dur branché en USB avec seulement un fichier (par ex : .txt) placé sur ce disque. Peut-on utilisé la méthode WMI ?

    Voici un exemple que j'ai réalisé mais qui n'est pas au point et très précis :

    # S'il existe un disque supérieur (-gt) à 15 GB alors echo Bonjour sinon echo Au revoir
    
                        if (Get-PhysicalDisk | Where-Object {$_.Size -gt 15GB})
                        {
    
                            if (Get-Disk | Where-Object {$_.Number -eq 2})
                            {
    
                                Clear-Disk 2 -RemoveData -Confirm:$false
    
                                if (Get-PhysicalDisk | Where-Object {$_.CanPool -eq "True"})
                                {
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: a pu être supprimé !"
    
                                }else{
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: n'a pas pu être supprimé !"
    
                                }
    
                                Initialize-Disk -Number 2 -PartitionStyle MBR
    
                                if (Get-Disk | Where-Object {$_.PartitionStyle -eq "MBR"})
                                {
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: a pu être initialisé !"
    
                                }else{
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: n'a pas pu être initialisé !"
    
                                }
    
                                New-Partition -DiskNumber 2 -UseMaximumSize -DriveLetter S
    
                                if (Get-Volume | Where-Object {$_.DriveLetter -eq "S"})
                                {
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: a pu être créé !"
    
                                }else{
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: n'a pas pu être créé !"
    
                                }
    
                                Format-Volume -DriveLetter S -FileSystem NTFS -Confirm:$false
    
                                if (Get-Volume | Where-Object {$_.FyleSystem -eq "NTFS"})
                                {
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: a pu être formaté au format NTFS !"
    
                                }else{
                                    
                                    echo ""
                                    echo "Le disque de Sauvegarde S: n'a pas pu être formaté au format NTFS !"
    
                                }
    
                            }else{
    
                                echo ""
                                echo "Il n'y a pas de troisième disque branché !"
    
                            }
    
                        }else{
    
                            echo ""
                            echo "Aucun disque supérieur à 2 To n'est disponible pour les sauvegardes !"
    
                        }
                }
    

    Merci d'avance pour votre réponse.

    Cordialement,

    vendredi 7 juillet 2017 06:35

Réponses

  • Pour l'automatisation de mes sauvegardes sur USB, perso, j'utilise USBDLM

    voir USBDLM

    Ce soft ultra léger permet beaucoup d'action à partit d’événement USB, comme:

    • Attribuer une lettre selon le label, ou le n° de série, ou l'ID du disque/clé USB
    • Attribuer une lettre selon un fichier présent ou nom sur le disque/clé USB
    • lancer un soft, script avec comme paramètre, par exemple, la lettre attribuée au disque/clé USB
    • ...

    C'est vraiment un soft que tu dois tester, il te sera très utiles dans ce que tu veux faire.

    • Marqué comme réponse LeMaath lundi 10 juillet 2017 09:38
    lundi 10 juillet 2017 07:43

Toutes les réponses

  • Explique nous ce que tu veux faire.

    Tu parles de fichier texte et de méthode WMI, ok

    En suite tu propose un script que ne contient absolument rien de cela???

    et pour cette ébauche de script, quelque remarques:

    • Un crochet de trop à la fin.
    • Ce script formate un disque sans avertissement seulement s'il répond à deux conditions (>15Gb et n°2)
      Ce qui en fait un script dangereux, et tu ne le dis pas.
    • Tu as dans ce script six conditions dépendantes l'une de l'autre. Et dans ton script, seule les conditions 2 et 3 sont imbriquées, les conditions 4, 5 et 6 devraient l'être aussi.
    • Tu test si un disque de plus de 15Gb et si ce n'est pas le cas, tu écris "aucun disque supérieur à 2 To n'est disponible pour les sauvegardes" Pourquoi 2TO????

    alors, sans modifier le script, le voici avec les conditions imbriquées.

    Je rappel que ce script peut éffacer un disque sans avertissement, à utiliser en connaissance de cause et sous votre seule responsabilité.

    if (Get-PhysicalDisk | Where-Object {$_.Size -gt 15GB}) {
      if (Get-Disk | Where-Object {$_.Number -eq 2}) {
          Clear-Disk 2 -RemoveData -Confirm:$false
          if (Get-PhysicalDisk | Where-Object {$_.CanPool -eq "True"}) {
              Write-Host "`nLe disque de Sauvegarde S: a pu être supprimé !"
              Initialize-Disk -Number 2 -PartitionStyle MBR
              if (Get-Disk | Where-Object {$_.PartitionStyle -eq "MBR"}) {
                  Write-Host "`nLe disque de Sauvegarde S: a pu être initialisé !"
                  New-Partition -DiskNumber 2 -UseMaximumSize -DriveLetter S
                  if (Get-Volume | Where-Object {$_.DriveLetter -eq "S"}) {
                      Write-Host "`nLe disque de Sauvegarde S: a pu être créé !"
                      Format-Volume -DriveLetter S -FileSystem NTFS -Confirm:$false
                      if (Get-Volume | Where-Object {$_.FyleSystem -eq "NTFS"}) {
                          Write-Host "`nLe disque de Sauvegarde S: a pu être formaté au format NTFS !"
                      }else{
                          Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être formaté au format NTFS !"
                      }
                  }else{
                      Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être créé !"
                  }
              }else{
                  Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être initialisé !"
              }
          }else{
              Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être supprimé !"
          }
    
      }else{
          Write-Host "`nIl n'y a pas de troisième disque branché !"
      }
    }else{
      Write-Host "`nAucun disque supérieur à 2 To n'est disponible pour les sauvegardes !"
    }
    
    

    Si cela peut te faire avancer...

    B.

    dimanche 9 juillet 2017 10:12
  • Explique nous ce que tu veux faire.

    Tu parles de fichier texte et de méthode WMI, ok

    En suite tu propose un script que ne contient absolument rien de cela???

    et pour cette ébauche de script, quelque remarques:

    • Un crochet de trop à la fin.
    • Ce script formate un disque sans avertissement seulement s'il répond à deux conditions (>15Gb et n°2)
      Ce qui en fait un script dangereux, et tu ne le dis pas.
    • Tu as dans ce script six conditions dépendantes l'une de l'autre. Et dans ton script, seule les conditions 2 et 3 sont imbriquées, les conditions 4, 5 et 6 devraient l'être aussi.
    • Tu test si un disque de plus de 15Gb et si ce n'est pas le cas, tu écris "aucun disque supérieur à 2 To n'est disponible pour les sauvegardes" Pourquoi 2TO????

    alors, sans modifier le script, le voici avec les conditions imbriquées.

    Je rappel que ce script peut éffacer un disque sans avertissement, à utiliser en connaissance de cause et sous votre seule responsabilité.

    if (Get-PhysicalDisk | Where-Object {$_.Size -gt 15GB}) {
      if (Get-Disk | Where-Object {$_.Number -eq 2}) {
          Clear-Disk 2 -RemoveData -Confirm:$false
          if (Get-PhysicalDisk | Where-Object {$_.CanPool -eq "True"}) {
              Write-Host "`nLe disque de Sauvegarde S: a pu être supprimé !"
              Initialize-Disk -Number 2 -PartitionStyle MBR
              if (Get-Disk | Where-Object {$_.PartitionStyle -eq "MBR"}) {
                  Write-Host "`nLe disque de Sauvegarde S: a pu être initialisé !"
                  New-Partition -DiskNumber 2 -UseMaximumSize -DriveLetter S
                  if (Get-Volume | Where-Object {$_.DriveLetter -eq "S"}) {
                      Write-Host "`nLe disque de Sauvegarde S: a pu être créé !"
                      Format-Volume -DriveLetter S -FileSystem NTFS -Confirm:$false
                      if (Get-Volume | Where-Object {$_.FyleSystem -eq "NTFS"}) {
                          Write-Host "`nLe disque de Sauvegarde S: a pu être formaté au format NTFS !"
                      }else{
                          Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être formaté au format NTFS !"
                      }
                  }else{
                      Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être créé !"
                  }
              }else{
                  Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être initialisé !"
              }
          }else{
              Write-Host "`nLe disque de Sauvegarde S: n'a pas pu être supprimé !"
          }
    
      }else{
          Write-Host "`nIl n'y a pas de troisième disque branché !"
      }
    }else{
      Write-Host "`nAucun disque supérieur à 2 To n'est disponible pour les sauvegardes !"
    }
    

    Si cela peut te faire avancer...

    B.


    Bonjour Bawilanemo,


    Merci tout d'abord pour ta réponse. C'est vrai, que quelques informations en plus ne ferais pas de mal.


    Je souhaite réaliser un script PowerShell qui automatisera une sauvegarde journalière d'un serveur distant en local. Cette sauvegarde sera réalisé par la fonctionnalité de Windows Server (Windows Server Backup), elle aura pour but de sauvegarder sur un disque dur externe toute les données du serveur.

    Je souhaiterais trouver le moyen d'éviter en réalisant ce script toute les manipulations à réaliser manuellement pour : attribuer une lettre à un disque, l'initialiser s'il ne l'est pas.  Réaliser toutes ses opérations une par une à la main sur chaque serveur serais très long, c'est pour ça que je souhaiterais réaliser un script automatique qui pourra m'avancer toute les tâches. Il me faudra juste brancher le disque dur externe pour mettre en service mon programme de sauvegarde.


    Je voulais également revenir sur tes remarques :


    • Je suis désolé d'avoir oublié le crochet de la fin, ce petit script fait partie de mon script réalisé sur la sauvegarde. Et en copiant collant j'ai oublié de l'enlever.
    • L'avertissement ne devrait pas apparaitre justement, par ce que ce script doit être automatisé.
    • 15 Go et 2 To c'est parce que je n'ai pas 2 To disponible sur mon Ordinateur pour des tests de sauvegarde en virtuel du coups j'ai laissé le 2 To en champs texte seulement ^^

    Je te remercie en tout cas pour ton aide.

    Cordialement,

    Mathieu



    lundi 10 juillet 2017 06:13
  • Pour l'automatisation de mes sauvegardes sur USB, perso, j'utilise USBDLM

    voir USBDLM

    Ce soft ultra léger permet beaucoup d'action à partit d’événement USB, comme:

    • Attribuer une lettre selon le label, ou le n° de série, ou l'ID du disque/clé USB
    • Attribuer une lettre selon un fichier présent ou nom sur le disque/clé USB
    • lancer un soft, script avec comme paramètre, par exemple, la lettre attribuée au disque/clé USB
    • ...

    C'est vraiment un soft que tu dois tester, il te sera très utiles dans ce que tu veux faire.

    • Marqué comme réponse LeMaath lundi 10 juillet 2017 09:38
    lundi 10 juillet 2017 07:43
  • C'est un service payant à ce que je viens de voir, non ?

    Merci

    lundi 10 juillet 2017 08:52
  • Gratuit pour une utilisation personnelle

    payant pour une utilisation professionnelle. (15$, ou 9$ à partir de 10)

    Tu peux donc faire tous tes tests de validations, il n'y a aucune restriction sur le soft.

    C'est basé sur la confiance uniquement.

    B.

    lundi 10 juillet 2017 10:20
  • N'y aurais t'il pas un équivalent gratuit pour une utilisation professionnel non commercial ?

    Merci

    lundi 10 juillet 2017 10:37
  • Je pense que ce soft est unique, et y goûter c'est l'adopter.

    Il faut juste faire l'effort de le tester

    (je me souviens avoir été réticent au début, et puis, je ne sais plus m'en passer...)

    B.

    lundi 10 juillet 2017 12:21
  • Bonjour,

    Après l'avoir essayé, je le trouve très bien.

    Il n'empêche que ce produit est payant si je souhaite le déployer à travers tout les sites distants (99 sites) ce qui m'empêche de réaliser la suite de mon projet. Puisque j'utilise une technologie à moindre coups (gratuit) qui est Windows Server Backup intégré à Windows. N'y aurais t'il pas une autre solution ?

    Merci.

    mardi 11 juillet 2017 06:54
  • Tu peux regarder si il y a un évènement lié au branchement du disque, et si oui, créer un tâches liée à cet évènement.

    ++

    B.

    mercredi 12 juillet 2017 07:10