colinardo
Goto Top

Öffnen und Schließen von CD- und DVD-Laufwerken via Powershell ohne externe Tools

Eine Powershell-Funktion zum Öffnen und Schließen des CD/DVD-Trays

Diese Funktion ermöglicht es euch ein CD/DVD-Laufwerk mit einem Powershell-Script zu öffnen und zu schließen, ohne dafür Zusatztools verwenden zu müssen. Es nutzt dazu eine Win32 Funktion in der DLL winmm.dll.

Hinweis: Benötigt mindestens PowerShell 2.0.

<#
---------------------------------------------------------
- Function to open and close CD/DVD-Drive by drive letter
- by @colinardo (https://administrator.de)
---------------------------------------------------------
#>
function initCDROM() {
    [String]$SourceCode = @"  
Namespace colinardo.cdrom
    Public Class MyFunctions
        Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpszCommand As String, ByVal lpszReturnString As String, ByVal cchReturnLength As Long, ByVal hwndCallback As Long) As Long  

        Public Shared Function OpenDoor(device As String) As Long
            Dim cmd As Long = mciSendString("open " & device & " type cdaudio alias CD wait shareable", 0, 0, 0)  
            If cmd <> 0 Then
                Dim cmd2 As Long = mciSendString("set CD door open", 0, 0, 0)  
                mciSendString("close CD", 0, 0, 0)  
                Return cmd2
            Else
                Return cmd
            End If
        End Function
        Public Shared Function CloseDoor(device As String) As Long
            Dim cmd As Long = mciSendString("open " & device & " type cdaudio alias CD wait shareable", 0, 0, 0)  
            If cmd <> 0 Then
                Dim cmd2 As Long = mciSendString("set CD door closed", 0, 0, 0)  
                mciSendString("close CD", 0, 0, 0)  
                Return cmd2
            Else
                Return cmd
            End If
        End Function
    End Class
End Namespace
"@  
 add-type -TypeDefinition $SourceCode -Language VisualBasic
}

#Benutzerdefinierten .Net-Code laden (Hinweis: Die Type-Definition dar nur einmal in einer Session geladen werden)
initCDROM

echo "Öffne das Laufwerk F:"  
#Hiermit öffnet man ein Laufwerk mit dem jeweiligen Laufwerksbuchstaben
[colinardo.cdrom.MyFunctions]::OpenDoor("F:")  

echo "Schließe das Laufwerk F:"  
#Hiermit schließt man ein Laufwerk mit dem jeweiligen Laufwerksbuchstaben
[colinardo.cdrom.MyFunctions]::CloseDoor("F:")  
Kommentare wie man ein Laufwerk öffnet und schließt stehen im Code.

Happy coding ...

Grüße @colinardo

Content-Key: 219676

Url: https://administrator.de/contentid/219676

Printed on: April 19, 2024 at 23:04 o'clock