Bei vielen Aufgaben kann Windows PowerShell die Arbeit sehr erleichtern. Um noch mehr automatisieren zu können, kann man es durch Add-Ins und Module ergänzen. YammerShell ist ein Modul für PowerShell, mit dem man Yammer verwalten kann.


Was ist Yammer?

Yammer ist ein soziales Netzwerk für die interne Kommunikation in Unternehmen. Dort kann man Neuigkeiten und Dateien teilen.

Was ist YammerShell?

YammerShell ist ein Windows PowerShell Modul, das neue CommandLets zur Verfügung stellt. Damit kann man Yammer ansprechen und verschiedene Aufgaben ausführen. Man kann zum Beispiel neue Gruppen anlegen, Nachrichten schreiben und Inhalte suchen.

Möglichkeiten

Mit Hilfe der neuen CommandLets kann man z.B.:

  • Benutzer anlegen
  • Gruppen erstellen
  • Benutzer zu Gruppen hinzufügen
  • Nachrichten schreiben
  • Daten abfragen

Implementierung

Das PowerShell-Modul ist eine Klassenbibliothek, die in C# geschrieben ist. Die Authentifizierung erfolgt über OAuth2, da die Rest-API von Yammer verwendet wird. Die sinnvollsten Endpunkte der Schnittstelle wurden dabei als CmdLet umgesetzt.
Im Rahmen unserer Open Source Initiative wurde der gesamte Quellcode auf Github hochgeladen:

Github.com/DataOne

Der Code steht unter MIT-Lizenz und darf somit von jedem wiederverwendet werden.

Benutzung des Moduls

Um YammerShell verwenden zu können muss man das Modul importieren. Dies geschieht über den Befehl Import-Module, der als Parameter den Pfad zur dll erwartet.
Nun muss ein Authentifizierungs-Token angegeben werden. Der Zugriff auf die Yammer-REST-API erfolgt stets über eine registrierte App. Am einfachsten gelangt man über das CommandLet Get-YmToken an das Token einer App. Dieses CommandLet navigiert den Benutzer durch die erforderlichen Schritte, um eine App bei Yammer zu registrieren. Außerdem wird so das Token automatisch gesetzt.
Danach kann man auf alle Befehle, die YammerShell bereitstellt, zugreifen. Eine Übersicht erhält man mit Get-YmHelp. Eine Erklärung sämtlicher Befehle findet sich auch in unserem Github-Repository.

Beispielskript

Das folgende Skript demonstriert die Verwendung von YammerShell. Damit werden ein Benutzer und eine Gruppe angelegt. Dann wird der Benutzer der Gruppe hinzugefügt. Außerdem wird eine Nachricht gepostet.


Zuerst wird das Modul importiert. Dann wird das Token gesetzt. Hier wird davon ausgegangen, dass das Token bereits vorher ermittelt wurde.
[code lang=“powershell“]Import-Module ‚.YammerShell.dll‘
Set-YmToken abc123-def456ghi789 [/code]

Nun wird eine neue Gruppe erstellt. Danach wird ein neuer Benutzer angelegt. Die IDs werden jeweils gespeichert. Der neue Benutzer wird dann der neuen Gruppe hinzugefügt. Zuletzt wird eine neue Nachricht gepostet.
[code lang=“powershell“]

# create a new group
$groupId = New-YmGroup -Name 'Marketing'
                       -Description 'Group of the department Marketing'

# create a new user
$userId = New-YmUser -Email 'user@company.com'
                     -FullName 'Max Power'
                     -DepartmentName 'Marketing'

# add user to group
Add-YmGroupMembership -GroupId $groupId
                      -UserId $userId

# post a new message
New-YmMessage 'Welcome to Yammer!'

[/code]

Dann werden die Gruppen von Yammer und alle Mitglieder aufgelistet. So kann man überprüfen, ob Gruppe und Benutzer korrekt angelegt wurden.
Zuletzt werden alle Nachrichten angezeigt. Die neue Nachricht sollte dabei ganz oben stehen.
[code lang=“powershell“]

# get all groups
Get-YmGroup | ForEach-Object {
    # list each group
    Write-Host 'All users for group ' + $_.Name

    # list all users of a group
    Get-YmUser -GroupId $_.Id
}

# list all messages
Get-YmMessage

[/code]

Fazit

Yammer stellt über seine REST-Schnittstelle einige nützliche Funktionen zu Verfügung. Jedoch ist längst nicht alles möglich, was man sich vielleicht wünschen würde.
Für sich wiederholende Aufgaben bietet YammerShell Möglichkeiten, mit denen man diese durch Skripte einfach automatisieren kann. Gerade für Administratoren kann es daher eine enorme Hilfe sein.

Quellcode

Das aktuelle Release und den Quellcode finden Sie unter:
Github.com/DataOne/YammerShell

Weiteres