PowerShell ISE an der PowerShell installieren

Manchmal braucht man nur „mal eben“ ein Feature. Das ist hier grade passiert mit dem Commandlet Out-Gridview. Für einen Benutzer sind grafische Ausgaben oft sehr sinnvoll und das Tool gehört ja „leider“ nur zur Powershell ISE und lässt sich nicht einzeln installieren.

Lösung

Die PowerShellISE direkt an der PowerShell installieren:

Import-Module servermanager; Add-windowsFeature powershell-ise

Für neue Outlook-Besprechungen (Termine) Teams als Standard abschalten

So gut Teams technisch auch immer funktionieren mag, die Standardvorgabe bei der Erstellung eines neuen Termins auf „Online“ zu stellen ist nicht immer sinnvoll – vor allem nach der Corona-Pandemie.

Wie genau sich die Vorgabe (Standartmäßig offline) geändert hat konnten wir nicht nachvollziehen, „auf einmal“ sind viele Outlooks auf Standartmäßige Teams-Meetings umgestellt. Wir haben auch schon viele Meetings bekommen, mit einem Nachtrag „nicht mehr online“ 😏

Bei der Erstellung eines neuen Termins kommt es in Outlook zudem zu einer nervigen zusätzlichen Wartepause, weil Outlook erst auf die Antwort der Teams-Clouddienste wartet. Das ist oft unnötig – zumal man bei Bedarf durchaus auch wieder „An Teams Besprechung teilnehmen“ auswählen kann.

Outlook Termin/Besprechung pro Termin umstellen

„Nicht online Hosten“ lässt die Teams-Besprechung nachträglich verschwinden

Teams entfernen geht natürlich im ersten Schritt für jeden Termin einzeln, über den Button „Nicht online Hosten“.

Dieser entfernt alle Teams-Settings aus der Besprechung und auch die automatisch eingefügen Inhalte, wie den Besprechungs-Link.

Outlook Standart-Vorgabe für neue Termine ändern

Die Standardeinstellung für neue Termin lässt sich in Outlook grundsätzlich ändern:

Datei > Optionen > Kalender > „Besprechungsanbieter hinzufügen“ > „Onlinebesprechungen zu allen Terminen hinzufügen“ (Haken entfernen)

Microsoft 365 Lizenz für alle Benutzer austauschen mit der PowerShell

Wenn man Änderungen an den Lizenzen in Microsoft (Office) 365 vornimmt, erlebt man oft dass die „alten“ und die „neuen“ Lizenzen widersprüchliche Optionen enthalten. Zudem gibt es häufiger mal Probleme, wenn Lizenzen „gepoolt“ sind und gleichzeitig zu Konten hinzugefügt werden sollen. Außerdem kommt es schon mal vor, das „mal eben“ eine Lizenz für alle Benutzer zu ersetzen ist.

Da hilt es, wenn man „mal eben“ alle Microsoft 365 Lizenzen auf einmal ersetzen kann.

Die Umstellung der Lizenzen der Benutzern muss selbstverständlich so durchgeführt werden, das die Endbenutzer das nich bemerken und alle Daten erhalten bleiben.

To the rescue: Das neue Lizenz-SKU mit dem Cmdlet Get-MsolAccountSku anschauen und via Set-MsolUserLicense tauschen.

Was habe ich überhaupt für Lizenzen (SKU)?

Die SKU ist die Microsoft „Stock Keepig Unit“, also quasi der Artikel. Das „quasi“ steht hier für den Artikelumfang, wirklich gleich sind ide Artikel nie. Jeder Tenant bekommt siene „eigene“ Kopie davon. In diesem Fall „TCHERNBYL“ als Platzhalter betrachten.

„Seine“ SKUs schaut man sich am besten zuerst an.

PS C:\> Get-MsolAccountSku

AccountSkuId                 ActiveUnits WarningUnits ConsumedUnits
------------                 ----------- ------------ -------------
TCHERNBYL:FLOW_FREE             10000       0            0
TCHERNBYL:SPB                   18          0            18
TCHERNBYL:EXCHANGESTANDARD      1           0            1
TCHERNBYL:O365_BUSINESS_PREMIUM 18          0            0

Hier hat der Tentant FLOW_FREE (GUI-Name „Power Automate Free“), ein paar SPB („Microsoft 365 Business Premium“), Exchange Pa und O365_BUSINESS_PREMIUM (Meint heute „Microsoft 365 Business Standard“).

Welche SKU haben meine Benutzer?

Das lässt sich genau so schnell herausfinden, wenn man Get-MsolUser filtert:

PS C:\> Get-MsolUser -All | Where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "TCHERNBYL:SPB"}

UserPrincipalName      DisplayName        isLicensed
-----------------      -----------        ----------

[email protected]       Wiktor Petrowytsch  True

Und wie tausche ich eine Lizenz gegen eine andere?

Im Beispiel wird „Business Premium“ durch „Business Standard“ für alle Lizenzierten Benutzer ausgetauscht:

PS C:\> Get-MsolUser -All | Where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "TCHERNBYL:SPB"} | Set-MsolUserLicense –AddLicenses "TCHERNBYL:O365_BUSINESS_PREMIUM" –RemoveLicenses "TCHERNBYL:SPB"

Das hilt übrigens auch, wenn man im POrtal zwei vermeintlich identische Lizenzen sieht.

Welche einzelnen Microsoft 365 Pläne sind in einem Plan (=Vertrag) enthalten?

Das lässt sich mit dem ServiceStatus Property beantworten. Eine Liste für eine aktive SKU lässt sich, zum Beispiel, so ausgeben:

PS C:\> (Get-MsolAccountSku | where {$_.AccountSkuId -eq "TCHERNBYL:SPB"}).ServiceStatus

ServicePlan                                ProvisioningStatus
-----------                                ------------------
MDE_SMB                                    Success
VIVA_LEARNING_SEEDED                       Success
Nucleus                                    Success
M365_LIGHTHOUSE_PARTNER_PLAN1              Success
WINDOWSUPDATEFORBUSINESS_DEPLOYMENTSERVICE Success
UNIVERSAL_PRINT_01                         Success
M365_LIGHTHOUSE_CUSTOMER_PLAN1             Success
POWER_VIRTUAL_AGENTS_O365_P3               Success
CDS_O365_P3                                Success
PROJECT_O365_P3                            Success
DYN365_CDS_O365_P3                         Success
MFA_PREMIUM                                Success
EXCHANGE_S_FOUNDATION                      Success
ADALLOM_S_DISCOVERY                        Success
AAD_PREMIUM                                Success
KAIZALA_O365_P2                            Success
MICROSOFT_SEARCH                           Success
OFFICE_SHARED_COMPUTER_ACTIVATION          Success
WHITEBOARD_PLAN1                           Success

[...]

Tastenkombination, Shortcut, Hotkey für die integrierte Windows Remotehilfe (Remote Assistance)

Ein Kunde (liebe Grüße!) hat mich soeben auf diese großartige Windows 10+ Tastenkombination hingewiesen:

STRG + WIN + Q

Die Kombination öffnet sofort die Windows Remotehilfe.

Damit können Benutzer einem Admin Zugriff auf den PC gewähren, Dateien kopieren und so weiter. Wie eine kostenlose Alternative zu TeamViewer, die sowiso ins System eingebaut ist 🙂

Excel ändert selbstständig alle Links in Arbeitsmappen

Man speichert „jahrelang“ Excel-Dateien auf dem Netzlaufwerk, hat dort jede Menge Links auf andere (Netzwerk-)Dateien gesetzt alles funktioniert wunderbar. Doch plötzlich gibt es beim Klick auf die Links nur noch Fehlermeldungen, nicht geht mehr.

Es erscheint statt der Dokumente ein „Sicherheitshinweis“ und vermeldet „Office hat ein potentielles Sicherheitsrisiko erkannt“. Außerdem sei „Dieser Speicherort ist möglicherweise nicht mehr sicher“.

Vorweg: Links in Excel-Dokumenten zu anderen Dokumenten sind (außer in Web- oder SharePoint Dateien) nicht absolut. Die Links bleiben also nicht bei dem was man manuell hinterlegt, sondern werden „verwaltet“. Excel versucht anhand eines Regelwerkes die Links „funktional“ zu halten und ändert beim Speichern gerne „mal eben“ alle Links des Dokumentes entsprechend ab.

Was ist das? Links zu Dokumenten auf Netzlaufwerken sind auf einmal „geändert“?

Das „Regelwerk“ das Excel nun dazu nutzt ist zum Glück ganz gut dokumentiert:
https://support.microsoft.com/de-de/topic/beschreibung-der-linkverwaltung-und-speicherung-in-excel-46628e8d-2cd6-db5f-3474-f8d7144b09d6

Ein wahrscheinliches Szenario das wir schon öfter gesehen haben könnte also zum Beispiel so aussehen:

  • Es gibt ein Netzlaufwerk X: das von \\Server\Share\Folder verbunden ist
  • Es gibt Links in einer Arbeitsmappe dort und das Dokument wird stets dort bearbeitet
  • Man öffnet die Datei vermeintlich von dort
  • Man speichert die Datei wieder dort
  • Oh nein! Alle Links sind geändert und stehen plötzlich auf Profilpfaden (%appdata%\local\Folder) oder dem Systemlaufwerk (C:\Folder)

Das, also der „Link-Verlust“ (das Phänomen nennt sich neudeutsch auch „Link-Loss“) passiert immer wenn:

  • Das Dokument (=der PC) zwischen durch „Offline“ war und Windows die Datei im Offlinecache bearbeitet hat. Der liegt nämlich auf c:\ (siehe CSC)
  • Die Datei mal „kopiert“ wurde, zum Beispiel auf einen USB-Stick oder den Desktop (C:\ oder f:\ …)
  • Die Datei via UNC-Pfad geöffnet wurde (\\Server\Share\Folder\Datei.xlsx)
  • Die Datei wurde automatisch zwischengespeichert (Default: 10 Minuten). Das passiert (Default) in %appdata%\roaming\microsoft\excel

In diesen Varianten findet Excel keinen Referenzort der Datei mehr zum relativen Pfad des geöffneten Dokumentes und ändert aus „Sicherheits- und Komfortgründen“ alle Pfade. Allerdings erst beim speichern, solang das Dokument noch geöffnet ist, ist die „zukünftige“ Änderung nicht sichtbar.

Lösung

Es gibt keine „richtige“ Lösung. Links in Excel-Tabellen sind supergefährlich. In dem Moment in den Man Daten (wie z.B. Links) in einer Tabellenkalukation verwendet, ist etwas schief gelaufen, Daten verwaltet man in Datenbanken (z.B. Access).

Aber: man kann das Problem etwas einzuschränken. Das geht natürlich auch per GPO.

  • „Automatisches Speichern“ komplett deaktivieren
  • Unter Optionen/Speichern -> Automatisches Speichern den standardmäßigen Speicherort auf den (relativen!!) Pfad des Dokumentes ändern. Je nach Anzahl der Netzlaufwerke ist es natürlich unsinn, bei jeder Datei den Ort immer wieder zu ändern.

Excel (und alle anderen Office-Apps) speichern alle 10 Minuten die aktuellen Dateien. Das ist auch sehr gut so, denn wenn eine Office-App mal abstürzt oder der Datei-Handle verloren geht (Standy, Docking-Station, WLAN-Wechsel, Windows-Updates, USB-Stick Backup, Netzwerktrennung …) wird man ja von der „letzte bekannte Version“ begrüßt. Selbige kommt genau daher.