Powershell als Standard Shell bei Server Core

eingetragen in: Allgemein | 0

Immer schon gefragt warum diese „Legacy“ DOS Box bei Windows Server in der Core Installation die Standard Shell ist und nicht die fortschrittliche Powershell?
Hiermit kann man die Powershell zur Shell machen und spart sich das lästige, manuelle Starten der PS:

Set-ItemProperty -Path ‘HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon’ -Name Shell -Value 'cmd.exe /C start /max PowerShell.exe -NoExit'

(Dank an Jan Egil Ring auf yammer)

Powershell: Automatisiertes Eintragen aller Baseboard Management Controller (BMC) in VMM

eingetragen in: Allgemein, Powershell | 0

oder:
“Basispowermanagement und Grundlage für so vieles weiteres in System Center und VMM …”

Starte mal alle Hosts der xyz Umgebung nach geplanter Stromabschaltung am Wochenende wieder ein!

Supi, per Browser auf jeden der zig Hosts gehen, dort anmelden und dann “Einschalten” drücken… Trauriges Smiley
Besser als jeden einzelnen Server im RZ besuchen, aber bleibt trotzdem ein stupide, langweiliger Praktikantenjob:

pic03122

(Fujitsu hat da auch eine zentralisierte Lösung, werden einige jetzt sagen, aber die ist leider nicht im Einsatz)

Aber VMM kann hier ja sicher helfen, denn genauso wie man VMs einschalten kann, kann man ausgeschaltete Hosts über einen einfachen Rechtsklick auf den Host auch einschalten:

image

Zumindest in der Theorie, weil bei dem Kunden sah das in VMM wie folgt aus:

image

Trauriges Smiley

Also alles außer “Restart” ausgegraut…schade eigentlich, ist aber leicht erklärt:
Diese Funktionalität ist abhängig von einem konfigurieren Baseboard Management Controller (BMC) in VMM und/oder hardwareseitig von einem vorhandenen iRMC (z.B. bei Fujitsu) oder iLO (z.B. bei HP) oder anderen IPMI bzw. SMASH kompatiblen Management Boards in den Hosts/Hardwareservern.

Einzutragen ist die IP des jeweiligen BMC dafür in den Eigenschaften jedes Hosts unter Hardware –> Advanced –> BMC Settings:

pic10585

An der Stelle kann über “Browse” hinter dem RunAs Account Feld und “Create Run As Account” auch gleich, wenn nicht schon vorher in VMM unter “Settings” erledigt, der entsprechend auf dem BMC konfigurierte und berechtigte “RunAs Account” erstellt werden. Dabei muss “Username” und “Password” dem im BMC (iRMC/iLO) konfiguriertem entsprechen.

Leider habe ich die Erfahrung gemacht, dass VMM 2012 R2 hier anscheinend immer noch einen kleinen Bug hat, der verhindert, dass die BMC Einstellungen aus der GUI auch wirklich übernommen werden.
Ein Klick auf “OK” führt also zuverlässig zum Zurücksetzen der BMC Settings auf  den unkonfigurierten Zustand, was etwas nervig ist. Mir ist es zwar nach mehrmaligem Versuchen dann gelungen die BMC IP und den User über die GUI zu Konfigurieren, aber es geht mit Powershell auch relativ einfach und ist, nicht nur wenn man das für zig Systeme machen will, auch deutlich praktischer und hat immer funktioniert, sprich wurde auch wirklich übernommen!

Ok, also wie kommt man am einfachsten an den entsprechenden Befehl?

Suchmaschine?
Viel zu aufwändig, da muss man ja wissen, wonach man sucht! Smiley

Nein, über die VMM GUI, indem man die gewünschte Konfiguration einstellt, dann aber nicht, durch einen klick auf OK ausführen lässt, sondern sich über den kleinen oft übersehenen Button unten Links “View Skript” das Powershell Skript anzeigen lässt, welches die gewünschte Konfiguration umsetzen würde!
Weil die GUI übersetzt auch nur alles in Powershell und lässt dann ein entsprechendes, automatisch erstelltes Skript für die eigentliche Konfiguration ablaufen!
(ist in Exchange und Co übrigens genauso und auch dort sehr praktisch um sich Skripte für automatisierte Konfigurationen zu “Klauen”)

Aber da wir nur die BMC Eigenschaften ändern wollen, reduzieren wir alles andere und überflüssige IDs einfach mal raus:

$vmHost = “Computername-des-Hardware-Hosts”
$bmcRunAsAccount = Get-SCRunAsAccount -Name „iRMC Administrator“
Set-SCVMHost -VMHost $vmHost  -BMCProtocol „IPMI“ -BMCAddress „192.168.1.1“ -BMCPort „623“
-BMCRunAsAccount $bmcRunAsAccount

Im Wesentlichen also der Set-SCVMHost Befehl mit Variablen gefüttert und gut ist.

Darauf aufbauend habe ich das Skript etwas erweitert, da ich ja nicht nur einen, sondern alle Hosts einer Domäne eintragen will.
Dabei habe ich mir Zunutze gemacht, dass der Kunde ein Namenskonzept für die Hosts und deren BMC hat:
Alle Host fangen mit C an und gehen mit einer Nummer weiter, die zugehörigen BMC Adapter mit einem I und dahinter dieselbe Nummer.
Also musste ich “nur” das C durch ein I ersetzen und dazu dann die passende IP abfragen! Ok…

# Alle Hosts einer Domain abfragen und in $Hosts speichern
$Hosts = Get-SCVMHost | ForEach-Object {$_.Computername}

# Für jeden dieser $Server in $Hosts folgende Schleife durchlaufen
ForEach ($Server in $Hosts)
{
# Windows Hostnamen in iRMC Hostnamen umwandeln (führendes „C“/“c“ durch „I“ ersetzen:
$irmc = $Server.ToUpper().Replace(„C“,“I“)

# IP Adressen des iRMC Adapters auslesen und in $ipAddresses speichern
$ipAddresses = [System.Net.Dns]::GetHostAddresses($irmc)
}

Soweit so gut.
Dann noch den SCVMhost Befehl oben in die Schleife einsetzen und mit den entsprechenden Variablen bei jedem Durchlauf füttern, sowie generell etwas “hübsch” machen:

<#
———————————————————————————
Add-BMCSet Skript
Fügt in SC VMM die Einstellungen für den iRMC Adapter der Hosts hinzu

Oliver Sommer, TrinityComputer.de GmbH

———————————————————————————-
#>

Clear-Host

# Dienstekonto „iRMC Administrator“ muss in VMM vorhanden sein!
$bmcRunAsAccount = Get-SCRunAsAccount -Name „iRMCAdmin“

# Alle Hosts einer Domain abfragen und in $Hosts speichern
$Hosts = Get-SCVMHost | ForEach-Object {$_.Computername}

# nur ein spezifischer Host (z.B. zum Testen des Skripts)
# $Hosts = „serv01“

# Für jeden dieser $Server in $Hosts folgende Schleife durchlaufen
ForEach ($Server in $Hosts)
{
# Windows Hostnamen in iRMC Hostnamen umwandeln (führendes „C“/“c“ durch „I“ ersetzen:
$irmc = $Server.ToUpper().Replace(„C“,“I“)

# IP Adressen des iRMC Adapters auslesen und in $ipAddresses speichern
$ipAddresses = [System.Net.Dns]::GetHostAddresses($irmc)

Write-Host iRMC Adresse von $Server lautet $irmc mit der IP $ipAddresses… -ForegroundColor Yellow
Write-Host

#iRMC Adapter in SC VMM Konfig des jeweiligen Host/Servers eintragen
Write-Host Setze iRMC Adresse für $Server auf $ipAddresses[0].IPAddressToString :  -ForegroundColor Yellow
Set-SCVMHost -VMHost $Server -BMCProtocol „IPMI“ -BMCAddress $ipAddresses[0].IPAddressToString -BMCPort „623“ -BMCRunAsAccount $bmcRunAsAccount

}

Dann klappt es anschließend auch mit dem Powermanagement der Hosts über VMM:

image  image

Shutdown wäre sicher auch ohne iRMC technisch möglich, aber vermutlich ist das nicht verfügbar, weil man den Server sonst ja anschließend nicht wieder über VMM eingeschaltet bekommt! Smiley

Die Konfiguration eines BMC in VMM ist übrigens auch Voraussetzung für Bare Metal Deployment von Hosts und weiteren coolen Funktionalitäten die ein RZ erst richtig dynamisch und weitestgehend automatisierbar machen… aber dazu irgendwann später hoffentlich mal mehr an dieser Stelle! Smiley

How to ReOpen the command prompt on a core server (including nested RDP session scenario)

eingetragen in: Allgemein, Core | 0

Solution for nested RDP session, as discribed below, right here:
Type <CRTL> + <ALT> + <END> on the On-Screen Keyboard inside the first RDP session, Windows Security will open in the core servers RDP session and you can open the core servers Task Manager from there.

 

the initial and only GUI interface on a Windows Server installed as core server (server without a GUI) is an administrative command prompt.

If one accidentily closed that command prompt, there is no GUI element left that you might use to reopen that command prompt. At least on first sight it looks like it…

Well if you are sitting right upfront that server it’s quite easy to bring back that command prompt, by simply pressing <CRTL> + <ALT> + <DELETE>, from there click the link to run “task manager” and from there go to “file” and “run new task”.
Now t
ype “cmd” in the “Create new task” window and you’d get your admin cmd.exe back on screen instandly! Smiley

 

Well all that is a little more complicated if you’re in an RDP session!
…ok, not really Smiley … in  a simple RDP session to a core server all you need to change in the above procedure is that you want to press <CRTL> + <ALT> + <END> to get to that Windows Security screen to run Task Manager and from there on it’s the same ballgame again.

 

Ok, but what if you’re using a cascaded RDP session aka you’re using an admin hop server aka bastion host, Bastion RDP server?

You’d have to deal with the RDP Session in an RDP session (nested RDP session) issue that doesn’t send <CRTL> + <ALT> + <DELETE> nor <CRTL> + <ALT> + <END> to the most inside RDP session (your core server) but to the admin hop or your personal workstation.

I just found one little hint on how to get the CMD up and running again quite easily.

First:
One easy way to get this done is to force a logoff of your session on the core server and relogin.
This is easily done by another user account loging into the core server and “signing off” your users session using Task manager (type “taskmgr” in command prompt).

Second:
If you don’t  have another account or another collegue to signoff your account from that server, you can use this option:

 

In the admin hop RDP session open the start menu and search for “on” which should bring up the “on-Screen Keyboard” right away as result.

 

 

pic22779

 

run the OSK

 

pic08951

 

and maximise the core servers RDP session behind it. 

now type <CRTL> + <ALT> + <END> on the OSK and Windows Security will open in the core servers RDP session and you can open the core servers Task Manager from there. 

Then again:
Use “File” and “Run new task” to start CMD.exe again.

 

pic13782

 

and there you go with a fresh administrative command prompt.

 

TrinityComputer.de GmbH ist „TOP Consultant“

eingetragen in: Allgemein | 0

TrinityComputer.de gehört zu den besten IT-Beratern in Deutschland für den Mittelstand/Ehrung durch „Top Consultant“-Mentor Bundespräsident a.D. Christian Wulff.

Es gibt rund 15.000 Beratungsunternehmen in Deutschland – Eine der besten hat ihren Sitz in Detmold: Die IT Unternehmensberatung TrinityComputer.de GmbH wurde als „TOP Consultant“ im Rahmen des Deutschen-Mittelstands-Summit in Essen ausgezeichnet. Das Qualitätssiegel erhielt der Geschäftsführer der TrinityComputer.de GmbH, Marc Andre Kauffmann, vom Mentor des bundesweiten Wettbewerbs, dem Bundespräsidenten a.D. Christian Wulf.

Viele Mittelständler scheuen sich externe Berater einzuschalten. Der Grund: Die schier unüberschaubare Zahl von Anbietern macht eine Orientierung schwierig. Ein gutes Matching zwischen Kundenfirmen und Beratern zu erreichen, erscheint da wie ein Glücksspiel. TrinityComputer.de hat sich daher um das Siegel „Top Consultant“ beworben und das aufwendige Prüfverfahren erfolgreich durchlaufen. Das Unternehmen ist damit leicht als geeignete Beratung für den Mittelstand zu identifizieren.

Die TrinityComputer.de GmbH hat sich auf die Kompetenzfelder IT-Infrastructure und IT-Business-Alignment spezialisiert. Wie sehr es dem Unternehmen dabei gelingt, auf die speziellen Bedürfnisse des Mittelstands einzugehen, zeigt die Auszeichnung mit dem renommierten „Top Consultant“-Siegel. Denn entscheidend für den Erfolg bei dem wissenschaftlich fundierten Benchmarking ist eine kundengerechte, mittelstandsorientierte Beratungsleistung. Diese wurde von Prof. Dr. Dietmar Fink von der Hochschule Bonn-Rhein-Sieg und Bianka Knoblach überprüft. Beide leiten die Wissenschaftliche Gesellschaft für Management und Beratung (WGMB) und führen „Top Consultant“ seit sechs Jahren durch.

Im Rahmen der Analyse befragten Fink und Knoblach jeweils zehn Referenzkunden der Bewerber nach ihrer Zufriedenheit mit dem jeweiligen Unternehmen und prüften die Performance und Beratungsleistung. Alle bei „Top Consultant“ ausgezeichneten Berater haben dabei ein hervorragendes Ergebnis erzielt. Die TrinityComputer.de GmbH hat es als eines von nur 55 Unternehmen in ganz Deutschland, die in fünf Kategorien ausgezeichnet werden, in die Riege der Besten geschafft.

Wir helfen unseren Kunden noch besser zu werden und betrachten neben den technologischen- auch die betriebswirtschaftlichen Aspekte unserer Kunden. Nur durch eine ganzheitliche Betrachtung schaffen wir Nachhaltigkeit für unsere Kunden und haben das mit der Auszeichnung zum TOP-Consultant bewiesen.

Über den wissenschaftlichen Leiter:

Prof Dr. Dietmar Fink leitet den Lehrstuhl für Unternehmensberatung und -entwicklung der Hochschule Bonn-Rhein-Sieg und ist Geschäftsführer der Gesellschaft für Managementforschung. Er gilt als anerkannter, aber auch kritischer Kenner der Beraterszene. Seine Analysen zur Entwicklung des Beratungsmarktes sowie zu aktuellen und zukünftigen Managementtrends haben in der Wirtschaft und in den Medien seit Jahren ihren festen Platz.

Über die compamedia GmbH:

Die compamedia GmbH ist ein führender Anbieter von Benchmarkingprojekten für den Mittelstand. Sie betreut unter anderem die Projekte „Top 100 – die innovativsten Unternehmen im Mittelstand“, „Top Job – die besten Arbeitgeber im Mittelstand“ und „Top Consultant – die besten Berater für den Mittelstand“. Das Unternehmen aus Überlingen am Bodensee versteht sich als Mentor der besten deutschen Mittelständler.

PowerShell: Umstellung von dynamischer (per DHCP vergebener) auf statische IP Konfiguration

eingetragen in: Allgemein, Powershell, VMM | 0

Mit dem folgenden, nicht invasivem, also nur lesendem Skript kann man alle “Computername*” Systeme auf dynamische IP Konfiguration überprüfen:

Clear-Host

# ggf. für Vorarbeiten: Alle Clusternodes der Domain bestimmen
get-cluster -Domain QS | get-clusternode

# da Cluster auf eine IP Änderung evtl. mit einem Clusterdown aufgrund von Heartbeatverlust reagieren,
# wenn die Änderungen bei zwei Knoten des Cluster kurz hintereinander durchgeführt werden
# daher sollten Knoten mit dynamischer IP Konfiguration ggf. manuell, bzw.durch Ändern des
# „Name -like“ Suchparameters weiter unten, einzeln umgestellt werden

# Array $ServerVMs mit zu prüfenden VMs füllen, hier alle mit Server* OS und Computernamen die mit Computername* anfangen
$ServerVMs = Get-ADComputer -Filter {OperatingSystem -Like ‚*Server*‘ -and Name -like ‚Computername*‘} | select -Expand DNSHostName

#Schleife die jede der VMs des Arrays durchgeht
foreach ($ServerVM in $ServerVMs)
{
Write-Host Teste auf DHCP NICs in $ServerVM …

# Listet alle Systeme in $ServerVMs mit dynamischer IP Konfiguration
Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ServerVM | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true}

}

 

Weiterhin kann das erweiterte Skript dann Systeme mit dynamischer auf statische IP Konfiguration umstellen und behält dabei die ehemals dynamischen Werte bei:

Clear-Host

# ggf. für Vorarbeiten: Alle Clusternodes der Domain bestimmen
get-cluster -Domain QS | get-clusternode

# da Cluster auf eine IP Änderung evtl. mit einem Clusterdown aufgrund von Heartbeatverlust reagieren,
# wenn die Änderungen bei zwei Knoten des Cluster kurz hintereinander durchgeführt werden
# daher sollten Knoten mit dynamischer IP Konfiguration ggf. manuell, bzw.durch Ändern des
# „Name -like“ Suchparameters weiter unten, einzeln umgestellt werden

# Array $ServerVMs mit zu prüfenden VMs füllen, hier alle mit Server* OS und Computernamen die mit ‚Computername*‘ anfangen
$ServerVMs = Get-ADComputer -Filter {OperatingSystem -Like ‚*Server*‘ -and Name -like ‚Computername*‘} | select -Expand DNSHostName

#Schleife die jede der VMs des Arrays durchgeht
foreach ($ServerVM in $ServerVMs)
{
Write-Host Teste auf DHCP NICs in $ServerVM …

# Array mit allen Netzwerkkarten mit dynamischer IP der spezifischen VM aufbauen
# durch weglassen von „$NICs =“ an anfagng, bekommt man die betroffenen Systeme (mit dynamischer IP) aufgelistet
# dann sollte aber auch die (äußere) ForEach Schleife mit <# #> auskommentiert werden
$NICs = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ServerVM | where{$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true}

# Für jede dieser Netzwerkkarten die  Umstellung auf statische IP Konfiguration
# unter Beibehaltung der Daten der dynamischen Konfiguration (IP, Subnetz, Gateway, DNS Server)
ForEach ($NIC in $NICs)
{
# bisherige IP Daten in $ip, $subnet, $gateway, $dns schreiben
$ip = ($NIC.IPAddress[0])
$subnet = $NIC.IPSubnet[0] $gateway = $NIC.DefaultIPGateway
$dns = $NIC.DNSServerSearchOrder

# statische Konfiguration aktivieren, mit den Daten aus der dynamischen Konfiguration
$NIC.EnableStatic($ip,$subnet)
$NIC.SetGateways($gateway,1)
$NIC.SetDNSServerSearchOrder($dns)
$NIC.SetDynamicDNSRegistration(„FALSE“)
}
}

Powershell: Processor Combatibility mode für Hyper-V VMs

eingetragen in: Allgemein, Powershell, VMM | 0

Die CPU Kompatibilität für virtuelle Hyper-V Maschinen kann zur Live Migration der VMs auf einen Host mit einer anderen Prozessor Generation notwendig sein.
Daher empfehle ich immer diesen Modus auf allen VMs zu aktiveren, die nicht explizit auf die erweiterten Features angewiesen sind.

 

image

 

Im aktuellen Projekt hatten wir die Herausforderung dies bei allen VMs einer Domain umzustellen, natürlich dann nicht mehr per Hand/GUI, sondern natürlich mal wieder per PowerShell! Smiley

 

Ich habe also mal schnell ein kleine Skript gebaut, welches das für alle VMs einer Domain mit integriertem System Center Virtual Maschine Manager (VMM) umsetzt:

Voraussetzung ist, das alle VMs ausgeschaltet/heruntergefahren sein müssen!

 

Clear-Host

$VMs = Get-SCVirtualMachine

ForEach ($VM in $VMs)

{

Write-Host

Write-Host „Setze LimitCPUForMigration auf ‚true‘ für VM “ $VM -ForegroundColor Yellow

# ohne Setzen von GuestOS Shutdown:

Set-SCVirtualMachine -VM $VM  -CPULimitForMigration $true

# mit Setzen von GuestOS Shutdown:

# Set-SCVirtualMachine -VM $VM -CPULimitForMigration $true -StopAction ShutdownGuestOS

}

 

Der zweite (auskommentierte Teil) der Schleife würde auf der VM auch gleich das automatische Herunterfahren der VM (standard ist hier “speichern/safe state”) bei der “Automatic Stop Action” eintragen.
Dies haben wir hier beim Kunden auch direkt mit umgesetzt.

We are hiring: mITdenker gesucht

eingetragen in: Allgemein, Jobs | 0

Als qualitäts- und serviceorientiertes Unternehmen unterstützt die TrinityComputer.de GmbH als Microsoft GOLD-Partner seit fast 20 Jahren erfolgreich Unternehmen in allen Größenordnungen. Unsere Schwerpunkte bilden die Bereiche IT-Consulting und IT-Services. Wir sind ein wachstumsstarkes Unternehmen und legen besonderen Wert auf eine langfristige und vertrauensvolle Zusammenarbeit mit unseren Mitarbeitern(innen) und mit unseren Kunden. Durch unsere umfangreichen Weiterbildungsangebote fördern und entwickeln wir unsere

Mitarbeiter nachhaltig weiter – makeITbetter

Für den Bereich IT-Service und/oder IT-Consulting suchen wir Dich

Deine Aufgaben

  • Aufbau, Betrieb und Wartung von IT-Infrastrukturen im gesamten Microsoft Serverumfeld
  • Planung und Betreuung technischer Projekte im IT-Umfeld
  • Organisation und Durchführung von Rollouts im Bereich Infrastruktur
  • Ansprechpartner für Kunden und externe Dienstleister, sowie für die entsprechenden Fachbereiche
  • 1st und 2nd Level Support im direkten Kontakt mit unseren Kunden

Deine Benefits

  • Du bekommst Spielraum für Entwicklungen an vorderster Front
  • Wir sind Dein Partner für Deine persönliche Weiterentwicklung und helfen Dir Dein Expertenwissen weiter auszubauen und Deine Person im Markt zu stärken
  • Deine Kollegen sind Spezialisten in verschiedensten Bereichen und lernen voneinander und miteinander
  • Flexible Arbeitszeitmodelle für eine ausgeglichene Work-Life-Balance
  • Tolle Kollegen und jede Menge Spaß bei der Arbeit

Unsere Erwartung

  • Du hast fundierte Berufserfahrung in der Systemadministration im Microsoft Umfeld (inkl. Microsoft Exchange)
  • Du hast Erfahrung in der Administration von komplexen IT-Strukturen
  • Du hast idealerweise auch ITIL oder vergleichbare Kenntnisse
  • Begriffe wie AD, Hyper-V, SCCM, SCVMM, SCDPM, etc. sind für dich keine böhmischen Dörfer

Hast Du Lust auf neue Herausforderungen in einem tollen Team? Dann schick uns Deine vollständigen Bewerbungsunterlagen an:
work@trinitycomputer.de – Wir freuen uns auf Dich!
TrinityComputer.de GmbH | Consulting Services | Cheruskerweg 60 | 32760 Detmold | Germany