none
SIM ICC-ID einer UMTS-Karte mit Powershell 2.0 auslesen RRS feed

  • 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

    Donnerstag, 30. August 2012 11:01

Antworten

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

    Freitag, 31. August 2012 00:14
  • 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

    Freitag, 31. August 2012 17:43
  • Hallo Alex,

    leider nein, da ich nicht weiß, woher ich die cellcore.dll bekommen soll... :-(

    Viele Grüße

    Christian

    Sonntag, 16. September 2012 10:16
  • 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".

    Dienstag, 18. September 2012 17:41
    Moderator