saintwolf
Goto Top

DVD Eject mit Win PE

Hallo ich suche einen Script mit dem ich zb. über die Powershell die DVD auswerfen lassen kann. in win 7 und 8
bitte um hilfe

der Trick mit dem mediapl. geht an dieser stelle nicht.

hoffe es kann mir wer helfen danke schon mal vorab.

Content-ID: 219549

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

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

Robobob
Robobob 16.10.2013 aktualisiert um 13:32:46 Uhr
Goto Top
Hallo,

$items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)
$items.eject()

Funktioniert auf jeden Fall bei Win7

Gruß
Xolger
Xolger 16.10.2013 um 13:37:18 Uhr
Goto Top
Hallo,

http://lmgtfy.com/?q=powershell+eject+dvd

Versuchs mal mit den Unmengen von Suchergebnissen, ich denke da sollte doch was funktionieren


Gruß
Xolger
Saintwolf
Saintwolf 16.10.2013 um 13:46:22 Uhr
Goto Top
Zitat von @Robobob:
Hallo,

$items = (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0)
$items.eject()

Funktioniert auf jeden Fall bei Win7

Gruß

mein ohne dem rein über script..

und gesucht hab ich schon aber die führen das leider nicht aus hab da wohl noch einen fehler.
colinardo
Lösung colinardo 16.10.2013, aktualisiert am 05.12.2013 um 15:44:52 Uhr
Goto Top
Hallo SaintWolf,
du kannst folgendes machen.
Vorraussetzung sind aber mindestens Powershell 2.0 (weiß grad nicht ob das in Windows PE integrierbar ist) und aktivierte NET-Erweiterungen im Windows PE Image.
<#
-----------------------------------------------------------------------
- Function to open and close specific CD/DVD-Drive 
- 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:")  
ansonsten bau dir mit AutoIT eine EXE:
Beispiel:
#AutoIt3Wrapper_Change2CUI=y
if $CmdLine = 2 Then
	$laufwerk =  $CmdLine[1]
	$funktion = $CmdLine[2]
	if DriveGetType($laufwerk) <> "" and ($funktion  = "open" or $funktion = "close") then  
		if cdtray($laufwerk,$funktion) = 1 Then
			exit 0
		Else
			ConsoleWriteError("Unspecified Error")  
			exit 1
		endif
	Else
		ConsoleWriteError("Fehler in Parametern oder Laufwerk nicht verfügbar!" & @lf & "Syntax: tray.exe [Laufwerk] [open] | [close]")  
		exit 1
	EndIf

Else
	ConsoleWriteError("Kein Laufwerksparameter angegeben!" & @lf & "Syntax: tray.exe [Laufwerk] [open] | [close]")  
	exit 1
EndIf

Grüße Uwe
DerWoWusste
DerWoWusste 16.10.2013 um 23:02:10 Uhr
Goto Top
Hi.

Wenn Du in Dein PE eine winzige .exe integrieren magst, dann nimm nircmd, damit geht das als Einzeiler.
nircmd cdrom open
Saintwolf
Saintwolf 17.10.2013 um 08:50:30 Uhr
Goto Top
Vielen Danke hab den Script als .ps1 gespeichert und es geht....
powershell kann man als Zusatz zu der PE in´s pack aufnehmen will das dann gleich mal testen..
noch eine frage dazu ist es bei dem Script egal wie viele LW man hat da es vorkommt das ein PC 2 LW hat, hoffe dann öffnen sich beide.
colinardo
colinardo 17.10.2013 aktualisiert um 09:17:23 Uhr
Goto Top
Zitat von @Saintwolf:
powershell kann man als Zusatz zu der PE in´s pack aufnehmen will das dann gleich mal testen..
Das weis ich, aber PS Version 2.0 lässt sich anscheinend nicht integrieren.
noch eine frage dazu ist es bei dem Script egal wie viele LW man hat da es vorkommt das ein PC 2 LW hat, hoffe dann öffnen
sich beide.
Dafür muss man eine andere Funktion namens "MCISendCommand" mit erweiterten Parametern nutzen. Werde das hier noch posten..

Denke das du aber um ein Utility nicht herumkommen wirst...
Aber das sollte ja kein Problem darstellen..

Grüße Uwe
Saintwolf
Saintwolf 17.10.2013 um 18:02:20 Uhr
Goto Top
hi Uwe hab nun deinen script testen können unterm normalem Win pc geht es super, wenn ich dann mit der pe mit Powershell starte.den ich auf die PE-CD copiert habe, wird der script ausgeführt allerdings ohne das sich das LW bewegt ....
colinardo
colinardo 17.10.2013 um 18:05:12 Uhr
Goto Top
Zitat von @Saintwolf:
hi Uwe hab nun deinen script testen können unterm normalem Win pc geht es super, wenn ich dann mit der pe mit Powershell
starte.den ich auf die PE-CD copiert habe, wird der script ausgeführt allerdings ohne das sich das LW bewegt ....
Wie ich oben bereits geschrieben habe liegt das daran das auf einer Windows PE CD nur Powershell 1.0 geht .... und das Script erfordert leider mind. Powershell 2.0 !
colinardo
colinardo 17.10.2013 um 19:12:34 Uhr
Goto Top
Falls es noch jemand benötigt ...habe die Funktion zum öffnen und schließen bestimmter Laufwerke via Powershell oben aktualisiert.
Grüße Uwe