Benutzer mit den meisten Antworten
SIM ICC-ID einer UMTS-Karte mit Powershell 2.0 auslesen

Frage
-
Hallo,
gibt es eine Möglichkeit, die SIM ICC-ID einer UMTS-Karte mit der Powershell 2.0 auszulesen? Mein bisheriger Ansatz war, es mit dem System.IO.Ports.SerialPort-Objekt und dem entsprechenden AT-Kommando zu versuchen, was auch auf einem Fujitsu S761 mit einem Sierra Wireless WWAN Modem gut funktioniert:
$comPortNumber = Get-WMIObject win32_potsmodem | where-object {$_.Description -like "*Wireless*"} | foreach {$_.AttachedTo} if (!$comPortNumber) { Return "No Data Card Detected!" } else { $port = New-Object System.IO.Ports.SerialPort $port.PortName = $comPortNumber $port.BaudRate = "9600" $port.Parity = "None" $port.DataBits = 8 $port.StopBits = 1 $port.ReadTimeout = 9000 # 9 seconds $port.DtrEnable = "true" $port.open() #opens serial connection Start-Sleep 2 # wait 2 seconds until device is ready $port.Write("AT+") $port.Write("ICCID `r") #writes your content to the serial connection try { while($myinput = $port.ReadLine()) { $myinput } } catch [TimeoutException] { # Error handling code here } finally { # Any cleanup code goes here } $port.Close() #closes serial connection }
Auf einem DELL Latitude E6320 mit einem DELL Wireless 5550 HSPA+ Modem geht das Skript leider in die Hose und meldet einen "Error".
Gibt es vielleicht noch einen anderen Weg?
Vielen Dank.
Viele Grüße
Christian
Antworten
-
Die Dll war anscheinend Teil von Windows Mobile und Windows CE. Mal probiert ob sie im Zuge der Vereinheitlichung in Windows 8 aufgenommen wurde?
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".- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 19. September 2012 20:51
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 20. September 2012 12:07
-
Dies geht nur über die SIM Manager API (cellcore.dll), welche aber leider keine .net dll ist. Somit geht es nur über C# und PInvoke. Ein Beispiel gibt es hier: http://blog.opennetcf.com/ncowburn/CommentView,guid,309b8b8e-ebc7-4078-a8ba-f174761ea7af.aspx.
Der Code sollte sich recht einfach in ein PowerShell Script integrieren lassen.
-Raimund
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 19. September 2012 20:50
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 20. September 2012 12:07
Alle Antworten
-
Dies geht nur über die SIM Manager API (cellcore.dll), welche aber leider keine .net dll ist. Somit geht es nur über C# und PInvoke. Ein Beispiel gibt es hier: http://blog.opennetcf.com/ncowburn/CommentView,guid,309b8b8e-ebc7-4078-a8ba-f174761ea7af.aspx.
Der Code sollte sich recht einfach in ein PowerShell Script integrieren lassen.
-Raimund
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 19. September 2012 20:50
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 20. September 2012 12:07
-
Hallo Raimund,
danke für den Tipp, aber ich vermute, dass es die SIM Manager API (cellcore.dll) unter Windows 7 Enterprise nicht gibt, zumindest wird das behauptet, wenn ich den folgenden VB.NET-Code kompiliere:
Imports System.Runtime.InteropServices Imports System.Console Public Class Sim <DllImport("cellcore.dll")> _ Shared Function SimInitialize( _ ByVal dwFlags As Integer, _ ByVal lpfnCallback As IntPtr, _ ByVal dwParam As Integer, _ ByRef lphSim As IntPtr) As Integer End Function <DllImport("cellcore.dll")> _ Shared Function SimDeinitialize( _ ByVal hSim As IntPtr) As Integer End Function <DllImport("cellcore.dll")> _ Shared Function SimReadRecord( _ ByVal hSim As IntPtr, _ ByVal dwAddress As Integer, _ ByVal dwRecordType As Integer, _ ByVal dwIndex As Integer, _ ByVal lpData() As Byte, _ ByVal dwBufferSize As Integer, _ ByRef dwSize As Integer) As Integer End Function End Class Public Class Test Shared Sub Main() Dim EF_ICCID As Integer = &H2FE2 Dim SIM_RECORDTYPE_TRANSPARENT As Integer = 1 Dim hSim As IntPtr Dim iccid(9) As Byte Sim.SimInitialize(0, IntPtr.Zero, 0, hSim) Sim.SimReadRecord(hSim, _ EF_ICCID, _ SIM_RECORDTYPE_TRANSPARENT, _ 0, _ iccid, _ iccid.Length, _ 0) Sim.SimDeinitialize(hSim) ' Dim SimSerialNumber As String = FormatAsSimString(iccid) ReadLine() End Sub End Class
Der Fehler lautet dann: "Die DLL "cellcore.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden." Kann man die "cellcore.dll" für Windows 7 erhalten?
Viele Grüße
Christian
-
Hallo Christian,
Bist Du hier vielleicht weitergekommen?
Gruss,
AlexAlex Pitulice, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Die Dll war anscheinend Teil von Windows Mobile und Windows CE. Mal probiert ob sie im Zuge der Vereinheitlichung in Windows 8 aufgenommen wurde?
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".- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 19. September 2012 20:51
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 20. September 2012 12:07