TechDocs › Powershell-Erweiterung

Anwendungsfälle#

Benutzer#

Gehen wir davon aus, dass Benutzer in der XPhone Web-Administration gesperrt sind. So suchen Sie nach allen gesperrten Benutzern:

Get-XpUsers | Where{$_.Interlock –eq "True"}

Alternativ:

Get-XpUsers | Where-Object { $_.Interlock -eq "True"}

Hinweis

Folgende Vergleichsoperatoren können verwendet werden:

  • eq = equal (ist gleich)

  • gt = greater than (größer als)

  • ge = greater or equal (größer oder gleich)

  • lt = lower than (kleiner als)

  • le = lower or equal (kleiner oder gleich)

  • ne = not equal (nicht gleich)

  • like = Vergleiche mit *

  • match = Vergleich mit RegEx

In allen gesperrten Benutzern soll Achtung! in der Beschreibung stehen:

Get-XpUsers | Where{$_.Interlock –eq "True"} | foreach{$_.Description = "Achtung!";$_} | Set-XpUsers

Danach sollen alle gesperrten Benutzer entsperrt werden:

Get-XpUsers | where-object {$_.Interlock -eq $True} | foreach{$_.Interlock = $False;$_} | Set-XpUsers

Standorte und Konfigurationsgruppen#

Hier sollen alle Benutzer eines Standortes oder einer Konfigurationsgruppe aufgelistet und dann geändert werden. Dieses Beispiel verwendet die Fallback-Szenarien, kann aber beliebig für andere Änderungen abgeändert werden.

Suche#

Variante 1#

Mit dem folgenden Befehl können Sie eine Suche durchführen:

Get-XpUsers Berlin

Sie erhalten eine Liste aller Benutzer, die etwas mit Berlin zu tun haben. Die Suche entspricht der Suche im XPhone Server:

pwrshll-srch

Wie Sie jedoch sehen können, werden auch die Benutzerinformationen angezeigt. Bei dieser Suche werden alle Felder der Benutzer berücksichtigt. Daher werden z.B. auch Benutzer mit dem Nachnamen Berlin in der Liste angezeigt. Wenn Sie also mit dem obigen Befehl auch nach Standorten und Konfigurationsgruppen filtern wollen, müssen Sie diese eindeutig benennen (z.B. Standort_Berlin, Config_Hamburg o.ä.).

Variante 2#

Wie man sieht, ist Variante 1 fehleranfällig für Informationen, die im Benutzer konfiguriert sind. Bei Variante 2 sind die Namen der Standorte und Konfigurationsgruppen irrelevant, da mit den eindeutigen IDs der Standorte und Konfigurationsgruppen gearbeitet wird.

$id = Get-XpConfigGroups "Hauptstandort" -ConfigGroupNames "Berlin" | Select-Object Id | foreach { $_.Id }
Get-XpUsers | Where-Object -Property ParentGuid -eq $id

User-Objekte#

Die Suche der o.g. Variante 2 wird in diesem Beispiel erweitert, um die Anrufweiterleitung für das Fallbackszenario zu setzen.

$id = Get-XpConfigGroups "Hauptstandort" -ConfigGroupNames "Berlin" | Select-Object Id | foreach { $_.Id }
$u = Get-XpUsers | Where-Object -Property ParentGuid -eq $id
$n = $u | foreach { $_.Accountname }
Get-XpLineForwardData -ForwardMode "noanswer" -UserNames $n | foreach{$_.NoAnswerDelaySeconds = 30; $_.NoAnswerTargetInternal = 'forward'; $_.NoAnswerTargetInternalCallNumber = "+4989840798666"; $_.NoAnswerTargetExternal = 'off';$_} | Set-XpLineForwardData

Export und Import#

Exportieren Sie die angezeigten User-Objekte mit zugehörigen Properties in eine CSV-Datei:

Get-XpUsers | Select-Object -Property AccountName,TelephoneNumber | Export-Csv C:\cf.csv

Sie erhalten eine Datei mit AccountNamen und Telefonnummer:

"AccountName","TelephoneNumber"
"Eve.1@ucserver.local","+4989840798120"
"Christin.1@ucserver.local","+4989840798121"
"basti@ucserver.local","+4989840798122"
"Jonas.1@ucserver.local","+4989840798123"
"Daniel.1@ucserver.local","+4989840798124"

Ändern Sie die Datei folgendermaßen ab:

"AccountName","Destination"
"Eve.1@ucserver.local","+4940123456"
"Christin.1@ucserver.local","+4940123456"
"basti@ucserver.local","+4940123456"
"Jonas.1@ucserver.local","+49306666666"
"Daniel.1@ucserver.local","+4940123456"

Statt der eigenen Telefonnummer, soll ein Weiterleitungsziel als Fallbackszenario für Softphone/AnyDevice pro Benutzer konfiguriert werden. Der Import erfolgt über die Powershell wie folgt:

Import-Csv c:\cf.csv | ForEach-Object {
    $dest = $_.Destination;
    Get-XpLineForwardData -ForwardMode 'NoAnswer' -UserNames $_.AccountName | foreach{$_.NoAnswerDelaySeconds = 30; $_.NoAnswerTargetInternal = 'forward'; $_.NoAnswerTargetInternalCallNumber = $dest; $_.NoAnswerTargetExternal = 'off';$_} | Set-XpLineForwardData
}

Konnektoren#

CTI-Gateways auswählen#

Wenn Sie in allem Konnektoren das CTI-Gateway im Dialogfenster Unter Berücksichtigung erweiterter Einstellungen zur Leitungserzeugung auswählen müssen, können Sie mit dieser Anleitung das gewünschte Gateway in allen Konnektoren gleichzeitig festlegen.

In diesem Dialogfenster entspricht die Position der Sortierung innerhalb der Listenbox von oben nach unten. Beachten Sie, dass der Index bei 0 beginnt:

  • Index 0: CTI-Gateway Innovaphone SOAP

  • Index 1: CTI-Gateway OSBiz CTI

    inno_powershell_gw-select

Mit folgendem Befehl setzen Sie in allen Konnektoren das Gateway an Position 0 und markieren es als ausgewählt:

PS C:\Windows\system32> get-xpconnectors | foreach{$_.optionslinecreation.pbx[0].selected=$true;$_} | select-object -Property Name,OptionsLineCreation

Beispielausgabe:

Name        OptionsLineCreation
----        -------------------
Support     DialParams = , PBX = Innovaphone SOAP ...
Sales       DialParams = , PBX = Innovaphone SOAP ...

Dieser erste Befehl ändert nur die lokalen Objekte. Es ist aber noch keine Übertragung zum Server erfolgt.

Um die Einstellung tatsächlich zu speichern, leiten Sie das Ergebnis an Set-XpConnectors weiter:

get-xpconnectors | foreach{$_.optionslinecreation.pbx[0].selected=$true;$_} | set-xpconnectors

Achtung

Diese Kommandos ändern alle vorhandenen Konnektoren gleichzeitig und führt keine Rückfrage durch. Nutzen Sie es daher nur, wenn Sie sich der Konsequenzen bewusst sind.

Das Ergebnis in allen Konnektoren sollte wie folgt aussehen:

inno_powershell_gw-select1

Flags setzen#

Hier wird beschrieben, wie Sie in allen Konnektoren das Weitere Flags (optional) Feld setzen:

inno_powershell_flags

Dieser Befehl ändert nur die lokalen Objekte und setzt das Flag 0x10000000. Es ist aber noch keine Übertragung zum Server erfolgt.

get-xpconnectors | foreach{$_.optionslinecreation.PBXAutoConfigExt=0x10000000;$_} | select-object -Property Name,OptionsLineCreation

Beispielausgabe:

Active Directory connector DialParams = , PBX = Innovaphone SOAP ...
Sales                      DialParams = , PBX = Innovaphone SOAP ...

Um die Einstellung tatsächlich zu speichern, leiten Sie das Ergebnis an Set-XpConnectors weiter:

get-xpconnectors | foreach{$_.optionslinecreation.PBXAutoConfigExt=0x10000000;$_} |set-xpconnectors

Achtung

Diese Kommandos ändern alle vorhandenen Konnektoren gleichzeitig und führt keine Rückfrage durch. Nutzen Sie es daher nur, wenn Sie sich der Konsequenzen bewusst sind.

Ihre Meinung zählt!

Ob Lob, hilfreiche Ideen oder ein Hinweis auf einen Fehler - wir freuen uns über jede Nachricht.
Schreiben Sie uns einfach an doku@c4b.de und helfen Sie mit, diese Dokumentation noch besser zu machen.
Vielen Dank für Ihre Unterstützung!