none
CDRom-Laufwerksbuchstaben ändern RRS feed

  • Frage

  • Hallo Forum,

    ich habe einen CodeSnippsel gefunden mit dem man den Laufwerksbuchstaben des CDRoms ändern kann.

    [Code]

    #---------------
    # Variables
    #----------------------------------------------
    $CDDrive = (Get-WmiObject -Class Win32_CDRomDrive).drive
    $DriveLetter = "Z:"
     
    #---------------
    # Changing the Drive Letter
    #----------------------------------------------
    #Retrieve the Volume Name for the CD Drive
    $MountPoint = (mountvol $CDDrive /l).Trim()
    #Remove the current drive mount
    mountvol $CDDrive /d
    #Create a new drive mount based on the new drive letter
    mountvol $DriveLetter $MountPoint

    [/Code]

    Das ganze habe ich als change.ps1 gespeichert und rufe das in der Powershell mit c:\change.ps1 auf.

    Wenn ich das tue, erhalte ich die folgende Fehlermeldung:

    PS C:\Windows\System32\WindowsPowerShell\v1.0> c:\change.ps1
    Fehler beim Aufrufen der Methode, da [System.Object[]] keine Methode mit dem Namen "Trim" enthält.
    Bei C:\change.ps1:16 Zeichen:42
    + $MountPoint = (mountvol $CDDrive /l).Trim <<<< ()
        + CategoryInfo          : InvalidOperation: (Trim:String) [], RuntimeExcep
       tion
        + FullyQualifiedErrorId : MethodNotFound

    Was ist hier falsch?

    Gruesse

    Peter Falk


    Donnerstag, 22. November 2012 09:51

Antworten

  • Deine Rechte am Rechner kannst du z.b. mit

    net user <username>

    prüfen.  Falls auf dem Rechner die UAC aktiv ist, kannst auch mal schauen ob es einen Unterschied macht wenn du die Konsole/den ISE über rechte Maustaste als Admin ausführst und dann das Script laufen lässt.

    Fall das nichts hilft, musst du hier Schritt für Schritt vorgehen.

    Deine Fehlermeldung mit trim() wird zwar in dieser Zeile ausgelöst:
     

    $MountPoint = (mountvol $CDDrive /l).Trim()


    Der Fehler tritt allerdings schon vorher auf. Denn der Fehler bedeutet nur, das das Ergebnis von:

    mountvol $CDDrive /l

     
    kein String ist
    (und es daher keine Trim()-Methode gibt), also warscheinlich einfach leer ist.

     
    Daher gilt es herauszufinden warum das Ergebnis leer ist. Prüfe also erstmal ob hier was brauchbares herauskommt:
     

    (Get-WmiObject -Class Win32_CDRomDrive).drive

     

    Wenn ja, nimmst du das Ergebnis und trägst es hier statt $cddrive ein:

    mountvol $CDDrive /l

     

    und führst das mal einzeln aus.

    Bis hierhin sollte nun eine hoffentlich brauchbarere Fehlermeldung gekommen sein.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Donnerstag, 22. November 2012 12:38
    Moderator
  • Hoi Peter,

    ich habe dir nochmal einen alternativen Weg gesucht, durch welchen du das Laufwerk umbenennen kannst

    $drive = Get-WmiObject -Class win32_volume -Filter "DriveType = 5"
    Set-WmiInstance -input $drive -Arguments @{DriveLetter="E:"; Label="Label"}

    Quelle: http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/14/change-drive-letters-and-labels-via-a-simple-powershell-command.aspx

    Donnerstag, 22. November 2012 10:40

Alle Antworten

  • Ciao Peter.

    Ich habe es mit diesem Code hier versucht

    #---------------
    # Variables
    #----------------------------------------------
    $CDDrive = (Get-WmiObject -Class Win32_CDRomDrive).drive
    $DriveLetter = "E:"
     
    #---------------
    # Changing the Drive Letter
    #----------------------------------------------
    #Retrieve the Volume Name for the CD Drive
    $MountPoint = (mountvol $CDDrive /l).Trim()
    #Remove the current drive mount
    mountvol $CDDrive /d
    #Create a new drive mount based on the new drive letter
    mountvol $DriveLetter $MountPoint

    Quelle: http://www.ithassle.nl/2011/02/change-cd-drive-letter-with-powershell/

    Scheint 1:1 der gleiche Code zu sein, wie du ihn verwendest. Bei mir funktioniert es so. Kann es sein, dass du nicht ausreichende Berechtigung hast?

    Donnerstag, 22. November 2012 10:31
  • Hoi Peter,

    ich habe dir nochmal einen alternativen Weg gesucht, durch welchen du das Laufwerk umbenennen kannst

    $drive = Get-WmiObject -Class win32_volume -Filter "DriveType = 5"
    Set-WmiInstance -input $drive -Arguments @{DriveLetter="E:"; Label="Label"}

    Quelle: http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/14/change-drive-letters-and-labels-via-a-simple-powershell-command.aspx

    Donnerstag, 22. November 2012 10:40
  • Ciao Peter.

    Ich habe es mit diesem Code hier versucht

    #---------------
    # Variables
    #----------------------------------------------
    $CDDrive = (Get-WmiObject -Class Win32_CDRomDrive).drive
    $DriveLetter = "E:"
     
    #---------------
    # Changing the Drive Letter
    #----------------------------------------------
    #Retrieve the Volume Name for the CD Drive
    $MountPoint = (mountvol $CDDrive /l).Trim()
    #Remove the current drive mount
    mountvol $CDDrive /d
    #Create a new drive mount based on the new drive letter
    mountvol $DriveLetter $MountPoint

    Quelle: http://www.ithassle.nl/2011/02/change-cd-drive-letter-with-powershell/

    Scheint 1:1 der gleiche Code zu sein, wie du ihn verwendest. Bei mir funktioniert es so. Kann es sein, dass du nicht ausreichende Berechtigung hast?

    Hallo toexelchen,

    wie kann ich denn prüfen ob ich ausreichende Berechtigungen habe?

    Manuell kann ich den Laufwerksbuchstaben ändern.

    Ich habe lokale Adminrechte auf dem System und bin  zusätzlich Domänenadministrator.

    Gruesse

    Donnerstag, 22. November 2012 12:00
  • Deine Rechte am Rechner kannst du z.b. mit

    net user <username>

    prüfen.  Falls auf dem Rechner die UAC aktiv ist, kannst auch mal schauen ob es einen Unterschied macht wenn du die Konsole/den ISE über rechte Maustaste als Admin ausführst und dann das Script laufen lässt.

    Fall das nichts hilft, musst du hier Schritt für Schritt vorgehen.

    Deine Fehlermeldung mit trim() wird zwar in dieser Zeile ausgelöst:
     

    $MountPoint = (mountvol $CDDrive /l).Trim()


    Der Fehler tritt allerdings schon vorher auf. Denn der Fehler bedeutet nur, das das Ergebnis von:

    mountvol $CDDrive /l

     
    kein String ist
    (und es daher keine Trim()-Methode gibt), also warscheinlich einfach leer ist.

     
    Daher gilt es herauszufinden warum das Ergebnis leer ist. Prüfe also erstmal ob hier was brauchbares herauskommt:
     

    (Get-WmiObject -Class Win32_CDRomDrive).drive

     

    Wenn ja, nimmst du das Ergebnis und trägst es hier statt $cddrive ein:

    mountvol $CDDrive /l

     

    und führst das mal einzeln aus.

    Bis hierhin sollte nun eine hoffentlich brauchbarere Fehlermeldung gekommen sein.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Donnerstag, 22. November 2012 12:38
    Moderator