Archiv des Autors: PemoAdmin

PowerShell Conference Europe 2018 vom 17. bis 20.4.2018 in Hannover – die Agenda steht

Seit ein paar Tagen steht die Agenda für die nächste PowerShell Conference Europe 2018 fest, die vom 17. bis 20.4.2018 wie üblich in Hannover stattfinden wird.

Alles weitere gibt es hier: http://www.psconf.eu/

Auch wenn die Agenda noch ein paar freie Slots enthält, soviel steht bereits fest. Wie im letzten Jahr wird Jeffrey Snover die Eröffnungsrede halten und sicher sowohl am Abend als vermutlich auch an den anderen Tagen der Konferenz in Person anwesend sein, so dass es jede Menge Gelegenheiten geben wird sich mit dem Erfinder der PowerShell persönlich zu unterhalten oder das obligatorische Selfie zu schießen.

Ein weiteres Highlight ist die Anwesenheit vom Matt Graeber, einem Sicherheitsexperten, der PowerShell als Tool für den Umgang mit Exploits auserkoren hat und einige faszinierende Functions geschrieben hat, die tief in das Windows-Betriebssystem eingreifen.

Ansonsten sieht es so aus als wäre das PowerShell-Team aus Redmond nicht so zahlreich vertreten wie im letzten Jahr. Ein Themenhighlight wird sicher der Vortrag zu „DSC Core“ sein, der nächsten Version von DSC, die anders als ihre Vorgänger losgelöst von .NET Framework und PowerShell entwickelt wird.

Darüber hinaus gibt es den üblichen Mix an interessanten Themen und Vorträgen von den PowerShell-Gurus aus dem Aus- und Inland. Es ist ja eine europäische Konferenz. Mit Ravikanth C ist auch ein Sprecher aus dem fernen Indien mit dabei.

Die Konferenz geht dieses Mal über vier Tage. Entsprechend wurde der Preis angehoben. Die Teilnahme kostet jetzt 1.399€ plus Mwst. Auf der einen Seite ein stolzer Preis, auf der anderen Seite kostet soviel in der Regel auch der dreitägige MOC 10962 Advanced Automated Administration with Windows PowerShell bei vielen Anbietern. Geht man von meiner Erfahrung aus, dass solche Aufbaukurse nur selten zustande kommen, ist die Konferenz die Gelegenheit das eigene PowerShell-Know how zu vertiefen, Kontakte zu knüpfen, sich auszutauschen und an den Abenden einfach Spaß zu haben.

Der PowerShell Summit 2018, der in ersten April-Woche in der Nähe von Seattle in den USA stattfinden wird, ist bereits ausverkauft.

Praxistipp: RDP per PowerShell aktivieren

Der folgende Tipp ist eher ein „Note to self“, da man ihn „tausendfach“ im Internet findet. Eventuell nicht ganz so übersichtlich wie in meinem Blog.

Auf einemn frisch installierten Windows Server ist der RDP-Zugriff von außen zunächst deaktiviert.

Das folgende kleine PowerShell-Skript aktiviert den RDP-Zugriff. Im Kern geht es darum, ein bzw. zwei Einträge in der Registry zu setzen und eine Firewall-Regel zu aktivieren. Das muss natürlich nicht unbedingt per PowerShell-Remoting umgesetzt werden. Auch für das Setzen der Firewall-Regel gibt es zahlreiche Alternativen.

Die folgende Anleitung ist daher auch nur eine von vielen. Sie funktioniert in dieser Form erst ab Windows Server 2012 aufwärts, da hier PS-Remoting von Anfang an aktiv ist. Benutzername, einbruchsicheres Kennwort und IP-Adresse bitte anpassen.

Neues von DSC – Open Source, keine Abhängigkeit zu .NET beim LCM und ein Providermodell für beliebige (Skript-) Sprachen

Im PowerShell Teamblog wurde Ende Januar 2018 ein erster Ausblick auf die nächste Version der Desired State Configuration (DSC) gegeben:

Desired State Configuration (DSC) Planning Update – January 2018

Dass DSC wie PowerShell auf Open Source umgestellt wird ist keine Überraschung. Bemerkenswert ist die komplette Loslösung vom .NET Framework und damit auch von der PowerShell.

Die wichtigsten Neuerungen sind laut Blog-Eintrag:

>Der LCM wird in C++ programmiert und damit komplett plattformunabhängig und vermutlich auch deutlich schlanker und perfomanter
>Über ein Providermodell können Ressourcen nicht nur in PowerShell-Skript geschrieben werden, sondern theoretisch in jeder Sprache
>Bestehende Konfigurationsdefinitionen und Ressourcen müssen nicht angepasst werden. Das erste Providermodell soll die PowerShell anbinden.

DSC vNext wird damit kompatibel zum aktuellen Modell sein, so dass man sein erworbenes Know-how nicht gleich wieder in die Tonne treten kann. Am Erstellen von Konfigurationen per PowerShell, an der Arbeitsweise von Push- und Pull-Modell oder an der LCM-Konfiguration dürfte sich grundsätzlich nichts bzw. nicht viel ändern. Es wird ohnehin so sein, dass die aktuelle Version auf Jahre weiter verwendet wird und die neue Version, sofern sie irgendwann verfügbar ist, in erster Linie für Szenarien eingesetzt wird, in denen z.B. das Providermodell eine Rolle spielt.

Die über UserVoice geäußersten Verbesserungsvorschläge für DSC sollen bei der Entwicklung der kommenden Version berücksichtigt werden.

DSC vNext wird voraussichtlich erst Ende dieses Jahres offiziell werden. Im Blog-Eintrag heißt es ja, dass man das Projekt innerhalb eines Jahres freigeben will. Auf den beiden großen PowerShell-Konferenzen, die im April in den USA und in Hannover stattfinden werden, gibt es bereits Vorträge zu „DSC vNext“. Spätestens zu diesem Zeitpunkt dürfte auch das PowerShell-Team etwas konkreter geworden sein. Man darf gespannt sein.

Mal eben Irfanview installieren

Ich liebe die Idee einer Paketverwaltung per Befehlszeile. Die Freiheit, an die mich nach den ersten Schritten mit Linux schnell gewöhnt habe, schätze ich auch unter Windows. Bekanntlich bringt PowerShell ab Version 5.0 einen „Paket-Manager-Manager“ mit, aber irgendwie habe ich seit Jahren das Gefühl er ist trotz einer guten Idee und einer halbwegs soliden Umsetzung „broken by design“.

Vor kurzem bin ich wieder einmal daran gescheitert das praktische Grafiktool Irfanview, das jede Menge Bildateiformate beherrscht und z.B. für das Verkleinern von Bitmaps sehr gut geeignet ist, per PowerShell zu installieren.

Eigentlich ganz einfach, doch der folgende Befehl brachte keinen Erfolg:

Es wurde lediglich das Setup-Programm für Irfanview heruntergeladen, aber offenbar nicht ausgeführt.

Vermutlich lag es daran, dass bei Windows 10 am Anfang keine Skripte ausgeführt werden dürfen. Ich habe es nach Setzen der Ausführungsrichtlinie aber nicht erneut probiert, sondern stattdessem dem Chocolatey-Paketmanager installiert:

Annschließend

Choco.exe stellt fest, dass IrfanView bereits installiert sein soll. Also noch einmal, dieses Mal mit dem beliebten f-Parameter:

Jetzt läuft es durch und etwas später befindet sich im Programme-Verzeichnis ein Verzeichnis IrfanView mit einer Programmdatei i_view64.exe.

Die Verknüpfung auf dem Desktop muss man allerdings zu Fuß anlegen. Einen PowerShell-Befehl gibt es dafür leider nicht.

Tipp: Wie immer enorm hilfreich, um Dateien aufzuspüren: UltraSearch von JAM Software (http://www.jam-software.de)

Eine echte Registry-Suche nach Einträgen

Eine Registry-Suche per PowerShell ist zunächst ganz einfach.

Der folgende Befehl durchsucht den Schlüssel HKey_Local_Machine\Software nach Schlüsseln, deren Name das Wort „Powershell“ enthält.

Das Problem: Die Suche wird nur mit den Schlüsselnamen durchgeführt. Das Ergebnis sind daher auch nur Objekte (vom Typ Microsoft.Win32.RegistryKey), die einzelne Schlüssel repräsentieren, auch wenn die Einträge und Werte jedes Schlüssels mitausgegeben werden.

Wer jetzt denkt, so schwer kann es nicht sein, ich muss lediglich den Output des dir-Kommandos zerlegen bzw. per Where-Object abfragen, so einfach geht es leider nicht. Wie schon oben erwähnt, die Rückgabe besteht aus „nackten“ Microsoft.Win32.RegistryKey-Objekten, an die die Einträge und ihre Werte leider nicht vom Typensystem der PowerShell angehängt werden (vermutlich aus Performancegründen).

Möchte man nach Einträgen suchen, wird es zwangsläufig etwas komplizierter. Für viele leider etwas zu kompliziert. Ich bin selber am Anfang meiner „Karriere“ als PowerShell-Anwender einige Male an einer Lösung gescheitert. Zumindestens an einer, die halbwegs nachvollziehbar war und die ich selber ein paar Monate später noch verstanden habe. Mir war einfach nicht klar, wie ich damit umgehen sollte, dass ein Get-ItemProperty alle Einträge eines Reg-Schlüssels in Gestalt eines PSCustomObject-Objekts zurückgibt, an das die Einträge als Properties angehängt wurden. Die Lösung natürlich: Über die psobject-Eigenschaft.

Ich hoffe, dass die folgende Function nachvollziehbar ist.

Bedroht die Cloud den klassischen Admin oder wie werde ich Cloud-Admin?

Auf Heise News war Anfang Januar 2018 ein interessanter Kommentar zu lesen, in dem ein erfahrener Systemadministrator, der für ein großes Unternehmen arbeitet, eindringlich vor den Gefahren der Cloud und ihrer Folgen für seinen Arbeitsplatz und dem vieler Kollegen (klar) warnte:

https://www.heise.de/ix/meldung/Kommentar-Keine-Zukunft-mit-der-Cloud-3822841.html

Interessant waren wie immer die Kommentare der Leser, insgesamt 459 was für einen Artikel, bei dem es einmal nicht um Microsoft, Windows 10 oder die Telekom ging, relativ viel ist.

Ich halte aus meiner langjährigen Erfahrung als freiberuflicher Dozent für PowerShell, Windows 10 und Entwicklerthemen und als Beobachter und Anwender von Azure und AWS (bei beiden Plattformen seitdem es sie gibt) die in dem Kommentar suggerierte Entwicklung für übertrieben. Ein Grund ist, dass es, Wie es auch in mehreren Kommentaren festgestellt wurde, den „Admin“ nicht gibt.

Um eine Antwort auf die Frage zu erhalten, inwieweit die Verlagerung von IT-Dienstleistungen in die Cloud den Beruf des Admins bedroht und ihm seinen Arbeitsplatz wegnimmt (vergleichbar mit dem Offset-Drucker, der durch das Aufkommen von PCs und DTP Anfang der 80er Jahre nach und nach überflüssig wurde), muss das Berufsbild des Admins nach Tätigkeiten differenziert werden. Dann wird deutlich, dass es den klassischen Admin, der sich um jeden Server einzeln kümmert, schon länger nicht mehr gibt bzw. dass dieses Berufsbild ein Auslaufmodell ist.

Die Cloud wird in den nächsten Jahren viele Dienstleistungen theoretisch überflüssig machen, es werden aber neue Dienstleistungen und damit auch neue Berufsbilder für Admins entstehen. Grundvoraussetzung ist die Bereitschaft umzulernen und vertraute Modelle und Vorgehensweisen aufzugeben. Mit Umlernen meine ich weniger, die Bedienung des Azure-Portals zu erlernen (das lohnt sich nur bedingt). Mit Umlernen meine ich neue Methodiken zu erlenen. Zum Beispiel jene, die bereits seit vielen Jahren unter dem Schlagwort DevOps zusammengefasst werden.

Weiterbildung ist immer eine gute Idee. Wer sich zum „Cloud Admin“ ausbilden lassen möchte, findet z.B. im Edx-Portal einen passenden Kurs, der von Microsoft angeboten wird:

https://courses.edx.org/courses/course-v1:Microsoft+AZURE215x+4T2017/course/

Die Inhalte des Kurses gehen zwar nicht allzu tief, aber man bekommt einmal einen Überblick über ein neues Tätigkeitsfeld und der Kurs ist kostenlos.

PowerShell 6.0 Core ist offiziell

Den Blog-Eintrag des PowerShell-Teams wird sicherlich jeder schon gelesen haben:

https://blogs.msdn.microsoft.com/powershell/2018/01/10/powershell-core-6-0-generally-available-ga-and-supported/

Die Open Source-Version der PowerShell ist unter dem Namen PowerShell Core 6.0 endlich offiziell. Das PowerShell-Team hat damit eine herausragende Arbeit abgeliefert. Herzlichen Glückwunsch!

Für alle Fälle die Downloadadresse für alle Versionen:

https://github.com/PowerShell/PowerShell/releases

Die wichtigste Nachricht für alle Administratoren, die die PowerShell in erster Linie als Werkzeug für die Windows-Administration sehen: Die Windows PowerShell 5.1 (und auch die ISE) wird es „ewig“ als fester Bestandteil von Windows geben, die neue PowerShell kann problemlos parallel betrieben werden. Anders als die Windows PowerShell wird sie als portable Anwendung in das Programme-Verzeichnis kopiert. Damit wäre es z.B. auch kein Problem, die Version 6.0 parallel zu einer Version 6.1 zu betreiben, die irgendwann als Nachfolger auf der Bildfläche erscheinen wird.

Die neue PowerShell 6.0 – jetzt sogar mit einer Art Maskottchen


Auch wenn die neue PowerShell 6.0 in naher Zukunft eher eine Randnotiz sein wird, da ihr im Vergleich zur PowerShell 5.1 ein paar wichtige Funktionalitäten zwangsläufig fehlen (Stichwort: WMI oder Kleinigkeiten wie ein Get-LocalUser-Cmdlet) und es unter Windows für Administratoren eigentlich keinen Grund gibt sie zu verwenden, markiert sie einen Meilenstein in der Entwicklung der Microsoft Systemadministrationstools.

Bemerkenswert ist die neue PowerShell weniger aufgrund irgendwelcher Eigenschaften (sie kann bis auf die SSH-Unterstützung für PS-Remoting ja deutlich weniger als die PowerShell 5.1), sondern durch die Art und Weise wie das PowerShell Team unter der Leitung von Joey Aiello das Open Source-Projelt umgesetzt haben.

Natürlich ist das erst der Anfang. Zusammen mit der Community wird die PowerShell in den kommenden Jahren immer besser. The sky is the limit.

Silvesterfeuerwerk über Leipzip

Die Open Source-PowerShell 6.0 Core ist endlich fertig – ein Dank an das PowerShell-Team und die Community

Tipp: Über die ISO-Datei an die Versionsnummer eines Windows-Image herankommen

Wer Windows 10 über das Media Creation Tool herunterlädt, erhält eine ISO-Datei mit dem unscheinbaren Namen Windows.iso. Nicht sehr aussagekräftig. Auch wenn man davon ausgehen darf, dass dies stets die aktuelleste offizielle Windows 10-Version ist, ein paar Wochen später ist das eventuell nicht mehr so eindeutig.

Natürlich kann man die Versionsnummer, zusammen mit vielen anderen Details, abfragen. Entweder per Dism.exe oder per Get-WindowsImage aus dem Dism-Modul.

Die PowerShell muss dazu als Administrator gestartet werden. Für beide Aufrufe wurde die Iso-Datei als Laufwerk gemounted. Dazu genügt ein Doppelklick auf die Datei.

oder

In beiden Fällen ist die Build-Nummer, z.B. 16299, Teil der Ausgabe.

Ein wenig kurios ist, dass der Index einmal 1 und einmal 7 ist, aber das wird schon seine Gründe haben;)

Aus aktuellem Anlass: Spectre und Meltdown-Check per PowerShell-Modul

Man glaubt zwar immer nach den „Skandalen“ der jüngsten Vergangenheit, dass es in Bezug auf Sicherheitslücken in IT-Systemen nicht schlimmer kommen kann, aber dann kommt es doch noch schlimmer. Ein Fehler auf der Ebene der CPU (Stichwort: „Speculative Execution side-channel attacks“), der Angreifern theoretisch einen Lesezugriff auf eigentlich geschützte Bereiche des Arbeitsspeichers ermöglicht, ist für mich ein Super-GAU. Da hilft auch alles Relativieren nichts. Auch wenn sich konkrete Schadensfälle in Grenzen halten werden, da weltweit die Mehrheit der Systeme in den nächsten Tagen ein Update erhält, ist die psychologische Auswirkung mehr als bedenklich.

Wozu sich noch um Sicherheitskonzepte, Benutzerkonten, Tokens und Claims Gedanken machen, wenn die komplette Sicherheit durch ein Einfallstor ausgehebelt wird, das in Zukunft immer wieder auftreten kann. Das ergibt sich aus der enormen Komplexität moderner CPUs. Hinzu kommt, dass der Fehler offenbar schon viele Jahre existierte und offenbar erst kurzem von einem Forscherteam der TU Graz entdeckt wurde als sie gehäuft aufgetretene Angriffsszenarien näher untersuchten.

Da über die Thematik in den letzten Tagen schon sehr viel geschrieben wurde, will ich nicht auch noch meinen Senf basierend auf Halbwissen und Vermutungen dazu geben. Auf Spiegel Online habe ich eine gute Zusammenfassung gefunden:

http://www.spiegel.de/netzwelt/gadgets/spectre-und-meltdown-die-wichtigsten-antworten-zu-den-schwachstellen-in-prozessoren-a-1186193.html

Ansonsten natürlich Heise-News mit einem ausführlichen und sehr lesenswerten Artikel von Andreas Stiller, Golem.de usw.

In ein paar Wochen dürfte das Thema ohnehin wieder vergessen sein. Wer macht sich denn aktuell noch über die Bedrohungen des letzten Jahres wie „WannaCry“ und die daraus eigentlich zu ziehenden Konsequenzen Gedanken? Bis zum nächsten Störfall will man vermutlich möglichst wenig Grundsätzliches in Frage stellen.

Wer testen möchte, ob eine CPU anfällig ist für Spectre und Meltdown kann ein PowerShell-Modul von Matt Miller von der PowerShell Gallery installieren, das Microsoft seit dem 4. Januar 2018 zur Verfügung stellt. Voraussetzung ist PowerShell ab Version 5.0. Und natürlich muss die Skriptausführung möglich sein. Wer sich bislang den Luxus gönnte mit einer älteren PowerShell-Version zu arbeiten, muss das Modul als Zip-Datei direkt von der Projektseite herunterladen, „entsperren“ und dann die beiden Dateien in ein in einem Modul-Verzeichnis zuvor angelegtem Verzeichnis mit dem Namen „SpeculationControl“ kopieren.

Eine Projektseite für das Windows 10-Modul habe ich leider nicht gefunden, in der TechNet Script Gallery gibt es das Modul für Windows Server 2016 als Download:

https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050

Das Modul lässt sich natürlich auch unter Windows 10 verwenden.

Liegt PowerShell ab version 5.0 vor, genügt ein

Das Modul wird dadurch nach %userprofile%\documents\windowspowershell\modules kopiert, so dass die PowerShell nicht als Administrator gestartet werden muss.

Anschließend wird die einzige Function wie folgt aufgerufen:

(für VMWare ist offenbar ein Patch erforderlich: https://twitter.com/lamw/status/949662333038559232)

Die Ausgabe des Befehls ist relativ technisch und mit zahlreichen Fachbegriffen versehen, man muss sie daher interpretieren können. Vereinfacht gilt, dass ein „false“ schlecht, ein „true“ gut. Hat man die aktuellen Patches (vor allem KB4056892) installiert, sollte die Mehrheit der Einstellungen einen true-Wert besitzen.

Microsoft beschreibt die Ausgaben auf der folgenden Webseite:

https://support.microsoft.com/de-de/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in

Das von Microsoft zur Verfügung gestellte Sicherheitsupdate hat die Nummer KB4056892. Wie es aussieht, muss es aktuell (Stand: 9/1/2018) bei Windows 10 noch direkt geladen werden:

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4056892

Damit ein Virenscanner das Update nicht verhindert, gibt es unter der folgenden Adresse eine Liste mit Problemlösungen bei den einzelnen Produkten:

https://docs.google.com/spreadsheets/d/184wcDt9I9TUNFFbsAVLpzAtckQxYiuirADzf3cL42FQ/htmlview?sle=true#gid=0

Wie die Meltdown-Abfrage remote ausgefürt wird, wird unter der folgenden Adresse ausführlich beschrieben:

https://blogs.technet.microsoft.com/ralphkyttle/2018/01/05/verifying-spectre-meltdown-protections-remotely/

Mit der Schadensbegrenzung dürften die zuständigen Admins ein paar Tage beschäftigt sein. Insofern hat das neue Jahr „vielversprechend“ begonnen;)