Jump to content

Speeddial Import Via Powershell


DNW66
 Share


Go to solution Solved by Tom Wellige,

Recommended Posts

I would like a way to either import a SpeeDial.key file to all users via Powershell or to use a Powershell script to copy the SpeedDial keys of one user to all other users. We are using Swyxware 2013. I am very new to Powershell so any help would be appreciated.


Link to comment
Share on other sites


  • 9 months later...
  • 7 months later...

Hi,

 

I would also like to know if anyone was able to update all users speed dials via powershell? i.e. copy a user speed dials and import them into all other users.

 

I can't see a way to do it from the following commands:

update-IpPbxSpeedDialKey

add-IpPbxSpeedDialKey

Get-IpPbxSpeedDialKey

 

Has anyone managed to do it?

 

Still unsure as to why Swyx would not make it easier for administrators to mass import speed dials.

 

Cheers

 

 

Link to comment
Share on other sites


  • 2 months later...

Hallo,

 

ich habe folgendes Script gefunden:


$GroupName = "Mitarbeiter"
$Mitarbeiters = Get-IpPbxGroupMember -GroupName $GroupName | Sort-Object -Property Name

Get-IpPbxGroupMember -GroupName $GroupName | ForEach-Object {
    write-host $_.Name
    $i = 0
    foreach ($Mitarbeiter in $Mitarbeiters) {
        $EntryTitel = $Mitarbeiter.Name
        if ($EntryTitel -ne $_.Name) { 
            $EntryNumber = $EntryTitel.Substring($EntryTitel.Length-3)
            $sdk = Get-IpPbxSpeedDialKey -UserEntry $_ -SpeedDialKeyId $i 
            $sdk.DialNumber = $EntryNumber
            $sdk.Label = $EntryTitel
            Update-IpPbxSpeedDialKey -UserEntry $_ -SpeedDialKey $sdk 
            $i = $i+1 
        }
    }
}

Ich bekomme es leider nicht hin, dass ich mit dem Script nur einen Benutzer verändere.

Ich hätte gerne, dass das komplette Adressbuch bei einem Benutzer alphabetisch neu Aufgebaut wird, habe aber leider von Powershell zu wenig Ahnung und mein Server bringt mittlerweile OutOfMemory-Meldungen.

Import-Module Ippbx
Connect-IpPbx localhost
$GroupName = "Jeder"
$i =0
Get-IpPbxGroupMember -GroupName $GroupName | Sort-Object -Property Name | ForEach-Object {
            $Users = Get-IpPbxUser -UserName $_.Name
            $sdk = Get-IpPbxSpeedDialKey -UserName "Dummy-Test" -SpeedDialKeyId $i 
            write-host $Users.Name
            write-host $Users.SipUserName
            write-host $i
            $sdk.DialNumber = $Users.SipUserName
            $sdk.Label = $Users.Name
            Update-IpPbxSpeedDialKey -UserName "Dummy-Test" -SpeedDialKey $sdk
            $i = $i + 1
}

Wenn ich das laufen lasse bekomme ich folgende Fehlermeldung:

Connect-IpPbx : Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.

In Zeile:2 Zeichen:1

+ Connect-IpPbx localhost

+ ~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Connect-IpPbx

 

Not connected. Use Connect-IpPbx first before you are using this cmdlet.

In C:\Program Files (x86)\NetPhone Administration\Modules\Ippbx\IpPbxGeneral.ps1:923 Zeichen:9

+ throw "Not connected. Use Connect-IpPbx first before you are using this ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (Not connected. ...ng this cmdlet.:String) [], RuntimeException

+ FullyQualifiedErrorId : Not connected. Use Connect-IpPbx first before you are using this cmdlet.

 

Was läuft falsch?

Für Tipps wäre ich sehr dankbar.

 

 

Grüße

JR

Link to comment
Share on other sites


  • 1 month later...

Hallo JR,

 

wir nutzen folgendes Script um alle Mitglieder einer Gruppe zu den Kurzwahltasten eines User-Skins zuzuordnen. 

 

 

Import-Module Ippbx
Connect-IpPbx localhost
$GroupName = "Jeder" #max 250 Mitglieder
$UserName = "Dummy"
$counter = 0

#löscht alle Kurzwahltasten von $UserName
Remove-IpPbxSpeedDialKey -UserName $UserName -Confirm:$false

#setzt die Anzahl auf 250 Kurzwahltasteneinträge = max
Set-IpPbxSpeedDialKeyCount -UserName $UserName -SpeedDialKeyCount 250

#liest die Gruppenmitglieder ein, welche auf den Kurzwahltasten angezeigt werden sollen und sortiert diese alphabetisch.
Get-IpPbxGroupMember -GroupName $GroupName | Sort-Object -Property Name | ForEach-Object {

            #liest die Variablen für den Usernamen ein
            $Users = Get-IpPbxUser -UserName $_.Name -ReadOnly -AddDeviceInformation 

            #liest die Variablen vom User "$UserName" für die Kurzwahl ein, beginnend mit ID 0
            $update = Get-IpPbxSpeedDialKey -UserName $UserName -SpeedDialKeyId $counter

            #deklariert die Durchwahl
            $update.DialNumber = $Users.InternalNumbers 

            #deklariert die Variable $text1 mit dem Namen
            $text1 = $Users.Name
            

            #wenn in der Namens-Variable ein Komma enhalten ist, dann aufsplitten
            if($text1 -match ","){

            #Splittet den Namen nach "," auf
            $text1 = $text1.Split(",") 

            #Text vor erstem Komma, für Nachnamen $text2
            $text2 = $text1[0] 
            

            #Text nach erstem Komma, für Vornamen
            $text1 = $text1[1]
           
            #erster Buchstabe des Vornamen $text3, entfernt alles nach dem zweiten Zeichen (, und restliche Buchstaben des Vornamen)
            $text3 = $text1.Remove(2)
           

            #erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
            $update.Label = $text2 + "," + $text3 + "." + " " + $update.DialNumber 
            
            }

            #wenn im Namen kein Komma vorkommt dann .... 
            else{
            

            #erzeugt den Labeltext, welcher auf der Kurzwahltaste/Skin angezeigt wird
            $update.Label = $Users.Name + " " + $update.DialNumber

            }

            #zeigt den Inhahalt der Kurzwahlübersicht in der Konsole an, nur Info
            write-output $update 


            #updated die Kurzwahlübersicht des Users $UserName
            update-IpPbxSpeedDialKey -UserName $UserName -SpeedDialKey $update 

            #zählt die ID um 1 hoch
            $counter = $counter + 1 
}

 

Gruß

ITS

 

 

Link to comment
Share on other sites


  • 4 years later...

Hallo!

 

@ITS: Vielen Dank für das Posten des Scripts. Dieses hat mir sehr weitergeholfen und ich habe auf dieser Grundlage ein Script geschrieben, um die Namenstasten bei allen Usern zu ändern (teilweise werden Tasten ausgelassen, weil das die eigenen Favoriten sind und sonst gibt es Reiter nach Standorten).

 

Ich habe jetzt aber das Problem, dass bei Ausführung das System auf ein "System.OutOfMemoryException" läuft und dann nicht mehr ordentlich weiter macht. Schuld ist scheinbar der Dienst SwyxConfigDataStore (ipPbxCDSService.exe) der irgendwann >1,4 GB Seicher nimmt (es ist noch genügend Speicher frei) und danach für den Fehler sorgt. Wenn ich beim Update nach jedem Benutzer ein Start-Sleep einbaue und den o.g. Prozess kille (er startet direkt wieder neu), dann läuft das Script durch. Das ist natürlich keine schöne Lösung. Hat da jemand eine Idee wieso das so ist?

 

Version im Einsatz:

SwyxWare 10.40.2694.0

 

Wenn gewollt, kann ich auch das Script posten.

 

Vielen Dank im Voraus.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.