116480
Goto Top

Bei Befehl get-activesyncdevice schneidet es immer den userdisplame im exportierten File ab Server Exchange 2013

Hallo,

ich führe immer
C:\Windows\system32>Get-ActiveSyncDevice|Format-List userdisplayName, DeviceId, DeviceType, DeviceModel, DeviceOS, FriendlyName, Name >c:\temp\alleMobiles.txt in der Exchange Shell aus.

Aber das exportierte *.TXT file , auch bei CSV schneidet mir immer den USerdisplyname ab. Es lässt nur eine bestimmte Anzahl Zeichen zu.
File
UserDisplayName : xxxxx.local/Niederlassung/Zürich/Benutzer/Informatik/ISL/IC/Thom

Es müsste aber Thomas und Familename lauten.

Weiss wer was man da machen kann ? Oder gibt es nur "Name" den ich exportieren kann.
Ich möchte mit dem Befehl User und sein HAndy anzeigen lassen.

Gruss
RAlf

Content-Key: 302360

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

Printed on: April 16, 2024 at 10:04 o'clock

Member: areanod
Solution areanod Apr 20, 2016 at 11:18:04 (UTC)
Goto Top
Ich wollte ursprünglich schreiben, dass dies doch eine total triviale Sache ist und wollte das auch beweisen...

Die Lösung ist zwar aufwendig, aber nicht kompliziert face-smile

Anstatt den Namen des Users aus Get-ActiveSyncDevice herauszuholen (was btw. deprecated ist, benutz lieber get-mobiledevice) mach zuerst eine Abfrage aller Mailboxen, hol dir von dort mit einer foreach-Schleife die lesbaren Namen aus den Mailboxen heraus und reiche das Ganze dann weiter (via Pipeline oder Script) um die weiteren Variablen abzufragen.

Ich hab das ganze gleich als CSV File aufgebaut, damit man es in Excel einfach nur noch importieren kann:

$Mailboxes = Get-Mailbox -ResultSize Unlimited
$CSVFILE = "~\Documents\test.csv"  

"MailboxName;DeviceID;DeviceType;DeviceModel;DeviceOS;FriendlyName;Name" | Out-File -FilePath $CSVFILE  


foreach($Mailbox in $Mailboxes)
{

    $DisplayName = $Mailbox.DisplayName
    $ASDevices = Get-MobileDevice -Mailbox $Mailbox

    foreach($ASDevice in $ASDevices)
    {
        $DeviceID = $ASDevice.DeviceID
        $DeviceType = $ASDevice.DeviceType
        $DeviceModel = $ASDevice.DeviceModel
        $DeviceOS = $ASDevice.DeviceOS
        $DeviceFriendlyName = $ASDevice.FriendlyName
        $DeviceName = $ASDevice.Name

        "$DisplayName;$DeviceID;$DeviceType;$DeviceModel;$DeviceOS;$DeviceFriendlyName;$DeviceName" | Out-File -FilePath $CSVFILE -Append  
     }
}

Pfad, Name und Extension des Dokuments müssten natürlich nach angepasst werden....

Je nachdem wie viele AS-Devices es gibt kann der Vorgang auch länger dauern, wie man einen Fortschrittsbalken in PS macht, da gibt es sicher ein paar gute Tutorials für face-smile

lG
Mitglied: 116480
116480 Apr 20, 2016 at 11:31:12 (UTC)
Goto Top
Hallo,

ich habe nun dein File als mobiles.ps1 abgescpeichert. Dann $CSVFILE = "~\Documents\test.csv" ist nun $CSVFILE = "c:\temp\test.csv"

Es kommt nun aber
PS] C:\support>mobiles.ps1
obiles.ps1 : The term 'mobiles.ps1' is not recognized as the name of a cmdlet, function, script file, or operable
rogram. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
t line:1 char:1
mobiles.ps1
~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (mobiles.ps1:String) , CommandNotFoundException

Gruss
Ralf
Member: areanod
Solution areanod Apr 20, 2016 updated at 12:13:52 (UTC)
Goto Top
Power-Shell Skripte werden wie Bash-Skripte ausgeführt, ansonsten werden sie nicht als Skripte sondern Prozedur/Funktionsaufrufe gedacht.

Wenn deine Datei mobiles.ps1 heißt dann führst du die Datei so aus:

.\mobiles.ps1 <ENTER>

Du kannst aber auch die Auto-Vervollständigung nutzen in dem du nur mob eingibst und dann so oft Tab drückst, bis dein Skript aufscheint und mit einem führenden .\ gezeigt wird.

lG


NACHTRAG:
Nicht vergessen, wenn's funktioniert bitte als "gelöst" markieren ;)
Außerdem muss das Skript in der Exchange Management Shell ausgeführt werden, in der normalen (blaue) Powershell wird das Skript nicht funktionieren
Mitglied: 116480
116480 Apr 20, 2016 at 12:26:19 (UTC)
Goto Top
Hallo,

danke. Es ging nun face-smile

Gruss
Ralf
Mitglied: 116480
116480 Apr 22, 2016 at 09:04:15 (UTC)
Goto Top
Hallo,

lauft dem gibt es ein Firstsynctime

https://technet.microsoft.com/de-de/library/dd335068(v=exchg.160).aspx

Kann man auch einblenden wann die Device zuletzt gesynct hat ?

Gruss
Ralf
Mitglied: 116480
116480 Apr 22, 2016 at 09:43:33 (UTC)
Goto Top
Ein Lastsync gibt es scheinbar nicht.
Ich habe das so eingebaut. Geht aber nicht., Firstsynctime bleibt immer leer

$Mailboxes = Get-Mailbox -ResultSize Unlimited
$CSVFILE = "c:\temp\Alle_MobileDevices.csv"  

"MailboxName;DeviceID;DeviceType;DeviceModel;DeviceOS;FriendlyName;Name;FirstSyncTime" | Out-File -FilePath $CSVFILE  
foreach($Mailbox in $Mailboxes)
{    $DisplayName = $Mailbox.DisplayName
    $ASDevices = Get-MobileDevice -Mailbox $Mailbox
    foreach($ASDevice in $ASDevices)
    {
        $DeviceID = $ASDevice.DeviceID
        $DeviceType = $ASDevice.DeviceType
        $DeviceModel = $ASDevice.DeviceModel
        $DeviceOS = $ASDevice.DeviceOS
        $DeviceFriendlyName = $ASDevice.FriendlyName
        $DeviceName = $ASDevice.Name
        $DeviceFirstSyncTime = $ASDevice.FirstSyncTime

        "$DisplayName;$DeviceID;$DeviceType;$DeviceModel;$DeviceOS;$DeviceFriendlyName;$DeviceName" | Out-File -FilePath $CSVFILE -Append  
     }
}
Member: areanod
areanod Apr 22, 2016 at 11:39:15 (UTC)
Goto Top
Ja, damit macht es auch genau das, was du in dem Skript angefordert hast face-smile

Der Teufel liegt hier im Detail.

In Zeile 4 wird die erste Zeile für das neue File generiert, die Überschriften. Hier hast du "FirstSyncTime" definiert. CHECK OK
In Zeile 16 liest du den Parameter aus dem Exchange Objekt aus und übergibst es in eine Variable. CHECK OK

Zeile 18 hast du dann anscheinend übersehen, denn da werden erst alle Variablen auch in die Datei geschrieben. Modifizier die Zeile 18 mal so, dass du wirklich alle Daten, die du in dem File drinnen haben willst, auch in die Datei zurückgeschrieben wird face-smile

lG
Mitglied: 116480
116480 Apr 22, 2016 at 12:13:54 (UTC)
Goto Top
Hallo,

nun geht es. Wie ich es sehe gibt es kein Lastsync `?? Stimmt das ?

Gruss
ralf
Member: areanod
areanod Apr 22, 2016 at 15:34:02 (UTC)
Goto Top
Message am Handy geschrieben, deswegen bitte um Nachsicht für Typos.

On-Topic:

Führ in der Powershell den Befehl ganz einfach mal aus mit einem beliebigen User und schau dir an, welche Infos das Ding ausspuckt.

ZB:
get-mobiledevice -mailbox TESTUSER | fl
Mitglied: 116480
116480 May 31, 2016 at 09:11:30 (UTC)
Goto Top
Mit diesem Command gibt es kein Lastsync.

Laut Kollege geht irgendwie der Command : $UserList | foreach { Get-ActiveSyncDeviceStatistics -Mailbox $_} | format-table -property identity,devicemodel,devicefriendlyname,lastsuccesssync >> c:\syncuser.csv

Rein in der Exchange Shell lief der nicht. Aber er hat Lastsuccesssync drinnen ?

Bei get-mobiledevice -mailbox TESTUSER | fl wird definitiv kein Lastsync aufgeführt.

Gruss
Ralf
Mitglied: 116480
116480 May 31, 2016 at 09:29:45 (UTC)
Goto Top
Ich habe es nun mit dem Script lösen können

http://exchangeserverpro.com/powershell-script-activesync-device-report ...

Gruss
Ralf