DNW66 Posted February 18, 2015 #1 Share Posted February 18, 2015 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 More sharing options...
Solution Tom Wellige Posted February 18, 2015 Solution #2 Share Posted February 18, 2015 The following posts might be a good starter: For general information on how to use the IpPbx Powershell module I recommend reading through the archived forum https://www.swyxforum.com/forum/30-powershell/ Link to comment Share on other sites More sharing options...
lmidde Posted December 7, 2015 #3 Share Posted December 7, 2015 Did the topic starter ever find a satisfying answer? I'm also looking for a way to use powershell to update 35 users with a new keyfile (manually is a pain-staking process) Link to comment Share on other sites More sharing options...
gdixon Posted July 27, 2016 #4 Share Posted July 27, 2016 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 More sharing options...
JR Posted October 27, 2016 #5 Share Posted October 27, 2016 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 More sharing options...
ITS Posted December 21, 2016 #6 Share Posted December 21, 2016 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 More sharing options...
Sascha H Posted September 28, 2021 #7 Share Posted September 28, 2021 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now