Windows-7- und Windows-8-Clients

Windows Server 2008 R2/2012, Exchange 2010 und SQL Server 2012 remote verwalten

17.07.2012 von Thomas Joos
Administratoren können zur Remote-Verwaltung von Active Directory und Serverdiensten entweder per Remote-Desktop oder von der eigenen Arbeitsstation aus per PowerShell auf den Server zugreifen. Das funktioniert mit Windows 7 und Server 2008 R2 und ebenso mit Windows 8 und Windows Server 2012

Über die PowerShell und die Remoteverwaltungstools lassen sich neben Active Directory auch Serverdiensten Serverdienste wie Exchange Server 2010, SharePoint 2010 oder auch SQL Server 2012 verwalten.

Vor allem die neuen Versionen wie Windows Server 2012 und SQL Server 2012 bieten hier interessante Möglichkeiten. Um Active Directory remote zu verwalten, benötigen Sie zunächst auf der Arbeitsstation die Remoteserver-Verwaltungstools für Windows 7 mit Service Pack 1. Diese umfassen die Verwaltungsprogramme für die verschiedenen Serverdienste in Windows Server 2008 R2, auch die CMDlets um Active Directory in der PowerShell zu verwalten. Wollen Sie Windows Server 2012 von Arbeitsstationen mit Windows 8 verwalten, können Sie auch hier die Remoteserver-Verwaltungstools für Windows 8 installieren.

Remoteserver-Verwaltungstools in Windows 7 und Windows 8 installieren

Windows 7 installiert lediglich die Installationsdateien der jeweiligen Werkzeuge auf der Arbeitsstation, es werden keinerlei Tools aktiviert. Die Installation erfolgt als *.msi-Datei. Das hat den Vorteil, dass Sie die Installation der Remoteserver-Verwaltungstools auch skripten können, ohne dass diese im Startmenü verfügbar sind. Die einzelnen Tools müssen Sie dann in der Systemsteuerung über die Aktivierung der Windows-Funktionen hinzufügen.

Windows-Funktionen: Die einzelnen Verwaltungs-Tools für Windows Server 2008 R2 und Windows Server 2012 installieren Sie über die Systemsteuerung in Windows 7/8.

In Windows 7 geben Sie im Suchfeld des Startmenüs optionalfeatures ein, in Windows 8 suchen Sie nach dem gleichen Begriff im neuen Startbildschirm. Dieser sucht automatisch nach Programmen, sobald Sie einen Buchstaben eingeben. Den Startbildschirm in Windows 8 starten Sie, indem Sie mit der Maus in die linke untere Ecke fahren und das Icon des Startbildschirms anklicken. Schneller geht es, wenn Sie die Windows-Taste auf der Tastatur betätigen.

Sie finden nach der Installation der *.msi-Datei für die Remoteserver-Verwaltungstools den neuen Bereich Remoteserver-Verwaltungstools\Rollenverwaltungstools in den Windows-Funktionen. Hier stehen alle Verwaltungsprogramme zur Verfügung, die die Serverdienste von Windows Server 2008 R2 und Windows Server 2012 bieten.

Windows 8: Die Remoteserver-Verwaltungstools stehen im Startbildschirm zur Verfügung.

Die Verwaltungstools für Active Directory finden Sie zum Beispiel mit Rollenverwaltungstools\AD DS-/AD LDS-Tools. Hier stehen auch die CMDlets zur Verwaltung von Active Directory zur Verfügung. Zum Beispiel das Active Directory-Modul für Windows PowerShell. In Windows 8 sind die Remoteverwaltungs-Tools bereits aktiviert. Sind diese nicht gleich im Startbildschirm zu sehen, aktivieren Sie die Ansicht Alle Apps mit der Tastenkombination STRG+TAB. In Windows 7 finden Sie die Tools im normalen Startmenü.

Verwaltungstools mit PowerShell 3.0 in Windows Server 2012 installieren

Wollen Sie von einem Server mit Windows Server 2008 R2 oder Windows Server 2012 aus Serverdienste verwalten, die auf dem Server nicht aktiviert sind, können Sie auch hier die Verwaltungstools installieren.

Gleiche Vorgehensweise: In Windows Server 2012 installieren Sie Verwaltungstools über den Server-Manager, wie in Windows Server 2008 R2.

Dazu benötigen Sie aber keine Patches, vielmehr können Sie die entsprechenden Tools direkt über den Server-Manager aktivieren. Die Installation erfolgt im Server-Manager über die Auswahl von Features\Feature hinzufügen\Remoteserver-Verwaltungstools\Rollenverwaltungstools. In Windows Server 2012 finden Sie die Tools über Verwalten\Rollen und Funktionen hinzufügen.

Alternative: Verwaltungstools können Sie in Windows Server 2008 R2 und Windows Server 2012 auch in der PowerShell installieren.

Sie können auf Servern die Installation der Verwaltungstools auch mit der PowerShell durchführen. Dazu laden Sie die entsprechenden CMDlets für die Verwaltung des Servers mit

Import-Module ServerManage

Mit Get-WindowsFeature lassen Sie die verfügbaren Features anzeigen. Die Installation von Features erfolgt dann mit dem Befehl Add-WindowsFeature <Kommagetrennte Liste>, zum Beispiel mit:

Add-WindowsFeature RSAT-AD-PowerShell,RSAT-AD-AdminCenter

die Installation der AD-Verwaltungstools.

Die Befehle funktionieren in der PowerShell 2.0 von Windows Server 2008 R2 und in der neuen PowerShell 3.0 von Windows Server 2012.

Remote-PowerShell aktivieren

Damit Sie einen Server über die PowerShell remote verwalten können, müssen Sie die Remoteverwaltung auf dem Server aktivieren. Dazu geben Sie auf dem entsprechenden Server den Befehl

Enable-PSRemoting -force

ein. Der Befehl aktiviert auch die Ausnahmen in der Windows-Firewall. Mit

Disable-PSRemoting -force

können Sie die Remoteverwaltung eines Servers über die PowerShell wieder deaktivieren.

Fernsteuerung: Die Remoteverwaltung eines Servers über die PowerShell können Sie in der PowerShell auf dem Server aktivieren und deaktivieren.

Um den Port für die Verbindung zu überprüfen, verwenden Sie den Befehl

WinRM enumerate winrm/config/listener

Der Listener verwendet in Windows Server 2008 R2 und in Windows Server 2012 den Port 5985. Funktioniert der Zugriff nicht, können Sie auf dem Zielserver auch eine Liste von Servern pflegen, die Zugriff auf Remote-PowerShell-Sitzungen haben sollen. Dazu verwenden Sie den Befehl winrm set winrm/config/client @{TrustedHosts="<Alle Quellcomputer, durch Komma getrennt>"}.

Remote-PowerShell nutzen - Vorteile von PowerShell 3.0

In Remote-PowerShell-Sitzungen verwenden Sie die gleichen CMDlets wie auf den lokalen Servern. Allerdings erlauben nicht alle CMDlets eine Remoteverwaltung. Sie sehen die kompatiblen CMDlets am schnellsten, indem Sie überprüfen, ob das CMDlet die Option -ComputerName unterstützt. Mit dem Befehl

Get-Help * -Parameter ComputerName

lassen Sie sich eine Liste aller dieser CMDlets anzeigen. Hier zeigt sich auch eine Neuerung in der PowerShell 3.0, die standardmäßig in Windows 8 und Windows Server 2012 zur Verfügung steht. In Windows 7 und Windows Server 2008 R2 können Sie die PowerShell 3.0 nachträglich installieren, standardmäßig verwenden Windows 7 und Windows Server 2008 R2 die PowerShell 2.0.

In der PowerShell 3.0 hat Microsoft die Hilfefunktion deutlich erweitert. Wenn Sie eine Hilfe zu CMDlets aufrufen, kann sich die PowerShell selbstständig aktualisieren. Das funktioniert eingeschränkt auch mit der alten PowerShell 2.0, wenn Sie für das CMDlet get-help die Option -online verwenden, zum Beispiel mit

get-help get-command -online

Die PowerShell 3.0 bietet das neue CMDlet update-help, das die Hilfedateien der PowerShell aktualisieren kann. Dazu muss der Server über eine Internetverbindung verfügen. Der Befehl ruft die Hilfe direkt aus dem Internet ab.

Bildergalerie:
Remote-PowerShell nutzen
Die PowerShell 3.0 bietet eine ausführlichere Hilfe als PowerShell 2.0 und kann Hilfedateien nachladen.
Remote-PowerShell nutzen
Die PowerShell zeigt alle CMDlets an, die über das Netzwerk ausführbar sind.
Remote-PowerShell nutzen
Anzeigen eines speziellen Hilfe-Fensters in der PowerShell 3.0.
Remote-PowerShell nutzen
Verbindungsaufbau mit einer PowerShellsitzung über das Netzwerkwerk mit PowerShell ISE.

Ebenfalls eine neue Funktion in der PowerShell 3.0 ist das CMDlet show-command. Dieses blendet ein neues Fenster mit allen Befehlen ein, die in der PowerShell verfügbar sind. Sie können im Fenster nach Befehlen suchen und sich eine Hilfe zum Befehl sowie Beispiele anzeigen lassen.

Mit der PowerShell lässt sich eine Remotesitzung auf einem Server starten. Am besten verwenden Sie dazu die PowerShell Integrated Script Engine (ISE). Diese ist in Windows 8 bereits aktiviert, muss aber teilweise in Windows 7 als Windows-Feature nachträglich aktiviert werden. Nach dem Start können Sie eine Verbindung mit Datei\Neue Remote-PowerShell-Registerkarte öffnen. Hier geben Sie einen Servernamen und einen Benutzernamen ein, mit dem Sie sich verbinden wollen.

Achten Sie auf die entsprechenden Ausnahmen in der Windows-Firewall des Zielrechners. Diese behandeln wir in den folgenden Abschnitten.

Exchange Server 2010 über die PowerShell verwalten

Neben der Möglichkeit, die herkömmlichen Serverdienste von Windows Server 2008 R2 oder Windows Server 2012 über das Netzwerk mit der PowerShell zu verwalten, funktioniert das auch für die meisten anderen aktuellen Serverdiensten von Microsoft. Vor allem SQL Server 2012, Exchange Server 2010 und SharePoint 2010 bieten entsprechende Möglichkeiten.

Ausbau: Fügen Sie die entsprechenden Funktionen zu Windows 7 hinzu.

Sie müssen dazu auf den Arbeitsstationen aber zusätzlich die Verwaltungstools dieser Serverdienste über die Installationsdateien des Serverdienstes installieren. Anschließend stehen in den Startmenüs auf den Rechnern auch die PowerShell-Erweiterungen für SQL Server 2012, SharePoint 2010 und Exchange Server 2010 zur Verfügung.

Auf diesem Weg können Sie also auch auf einem Server oder einer Arbeitsstation nur die Verwaltungstools für Exchange Server 2010 installieren. Allerdings müssen Sie darauf achten, dass in Exchange Server 2010 auch die Verwaltungstools 64-Bit voraussetzen; die Installation auf einem 32-Bit-Computer ist daher nicht möglich.

Werkzeuge: Installieren Sie die Exchange-Verwaltungstools unter Windows 7.

Neben Windows Server 2008 SP2 x64 und Windows Server 2008 R2 können Sie die Verwaltungstools auch unter Windows Vista ab Service Pack 2 und unter Windows 7/8 installieren. Damit Sie die Installation durchführen können, müssen Sie folgende Vorbereitungen treffen:

Wenn Sie diese Voraussetzungen geschaffen haben, können Sie über die Exchange-Server-2010-DVD die Verwaltungstools für Exchange Server 2010 installieren. Sie finden diese, wenn Sie eine benutzerdefinierte Installation durchführen.

Verwaltung per PowerShell von SharePoint 2010

Damit Sie PowerShell-Befehle für SharePoint 2010 nutzen können, müssen Sie über die SharePoint-Programmgruppe die SharePoint-2010-Verwaltungs-Shell starten oder die Befehle in eine normale PowerShell laden. Geben Sie dazu in der PowerShell oder PowerShell ISE den Befehl

Add-PSSnapin Microsoft.SharePoint.PowerShell

ein.

Wollen Sie alle Cmdlets für SharePoint anzeigen, verwenden Sie am besten den Befehl

Get-Command -pssnapin Microsoft.SharePoint.PowerShell

Mit dem Befehl

gcm -pssnapin microsoft.sharepoint.powershell | select name, definition | fl > .\SP2010cmdlets.txt

erstellen Sie eine *.txt-Datei, die alle Cmdlets für SharePoint enthält.

Wenn Sie

get-command

eingeben, sehen Sie alle Befehle, unabhängig von SharePoint. Die wenigsten Administratoren kennen alle Cmdlets. Haben Sie nur den Teil eines Befehls in Erinnerung, können Sie mit dem Platzhalter * arbeiten. Der Befehl

get-command *site

zeigt zum Beispiel alle Cmdlets an, deren Namen mit Site enden. Ist der gesuchte Befehl nicht dabei, können Sie auch mehrere Platzhalter verwenden, zum Beispiel den Befehl

get-command *site*

Er zeigt alle Befehle an, in denen das Wort site an beliebiger Stelle vorkommt.

Wollen Sie alle Cmdlets mit SPWeb auflisten, verwenden Sie den Befehl

Get-Command *SPWeb

Alle Vorlagen zeigen Sie mit

Get-SPWebTemplate

an, alle Dienstanwendungen mit

Get-SPServiceApplication

Die Lösungen der Farm zeigen Sie mit

Get-SPSolution

an, neue installieren Sie mit Add-SPSolution <Pfad und Name der *.wsp-Datei>. Features zeigt die Shell mit

Get-SPFeature

an.

PowerShell und SQL Server 2012

SQL Server 2012 können Sie ebenfalls in der PowerShell remote über das Netzwerk verwalten.

Ausführung: Sie können eine PowerShell-Sitzung über das Kontextmenü des Objekt Explorers im SQL Server Management Studio starten.

Dazu müssen Sie aber auf dem entsprechenden Computer die Verwaltungstools für SQL Server 2012 über die Installations-DVD installieren und die Remoteverwaltung für den Server im SQL-Server-Konfigurationsmanager aktivieren, und das ebenso in der PowerShell. Verwenden Sie auch hier den Befehl

Enable-PSRemoting -force

Der Befehl aktiviert zudem die Ausnahmen in der Windows-Firewall.

Außerdem ist eine neue Firewall-Regel erforderlich, die die Ports 1433-1434 zulässt. Funktioniert die Verbindung nicht, erstellen Sie noch eine eingehende Regel, die den Port 5985 zulässt.

Außerdem müssen Sie in der Windows-Firewall-Steuerung, Sie in der Systemsteuerung finden, folgende Ausnahmen aktivieren, damit der Zugriff über das Netzwerk funktioniert:

• Datei- und Druckerfreigabe

• Remotedienstverwaltung

• Windows-Remoteverwaltung

• Windows-Remoteverwaltung (Kompatibilität)

• Windows-Verwaltungsinstrumentation (WMI)

Anschließend funktioniert die Remoteverwaltung auch in Windows Server 2008 R2 über das Netzwerk.

Auf einen Blick: Starten Sie die SQL-PowerShell und lassen Sie die CMDlets anzeigen.

Das neue PowerShell-Modul in SQL Server 2012 ist vollständig in die PowerShell von Windows Server 2008 R2 und Windows Server 2012 integriert. Sie starten eine PowerShell-Sitzung am schnellsten über das SQL-Server-Managementstudio, wenn Sie im Objekt-Explorer mit der rechten Maustaste auf ein Objekt klicken. Alternativ geben Sie in der Befehlszeile oder einer PowerShell-Sitzung den Befehl sqlps ein. Der Befehl funktioniert in Windows Server 2008 R2 und in Windows Server 2012.

Mit dem Befehl

get-command

lassen Sie sich die CMDlets anzeigen, mit get-help <CMDlet> erhalten Sie eine Hilfe zum CMDlet. Der Umgang mit der PowerShell in SQL Server 2012 entspricht dem Umgang mit der herkömmlichen Windows-PowerShell, Exchange-Verwaltungs-Shell oder SharePoint2010-Verwaltungs-Shell.

Sie können mit der PowerShell in SQL Server 2012 auch SQL-Server ab Version SQL Server 2000 SP4 verwalten. Achten Sie aber darauf, dass möglichst das aktuellste Service Pack für den SQL-Server installiert ist.

Mit SQL Server und PowerShell arbeiten

Standardmäßig blockiert die Windows-PowerShell nicht-signierte Skripts über die Ausführungsrichtlinie. Davon ist auch die SQL-PowerShell betroffen. Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy ändern und mit

Get-ExecutionPolicy

anzeigen. Die Ausführungsrichtlinie speichert ihre Daten in der Windows-Registrierung. Sie können folgende Einstellungen vornehmen:

Restricted - Standardeinstellung. Keine Skripts erlaubt, SQL-Skripts funktionieren nicht.

AllSigned - Nur signierte Skripts sind erlaubt. Auch hier funktionieren keine SQL-Skripts, da diese nicht signiert sind.

RemoteSigned - Bei dieser Einstellung müssen Sie Skripts durch eine Zertifizierungsstelle signieren lassen.

Unrestricted - Mit dieser Einstellung funktionieren auch die SQL-Skripts.

Nach der Eingabe von

Set-ExecutionPolicy unrestricted

müssen Sie die Ausführung noch bestätigen. Als Nächstes laden Sie mit

Import-Module sqlps

die Erweiterung in die PowerShell. Die Warnung, die daraufhin erscheint, können Sie ignorieren. Sie müssen nicht den ganzen Namen eines Cmdlet-Parameters angeben. Es genügen so viele Zeichen des Namens, dass dieser eindeutig von den anderen Parametern unterschieden werden kann, die das Cmdlet unterstützt. Hierfür drei Beispiele:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3

Alle drei Befehle führen eine T-SQL-Anweisung in der PowerShell durch, die den Status des Servers anzeigt. Wenn Sie am Ende noch ein |fl eingeben, erhalten Sie ausführlichere Informationen.

Mit

Get-Help SQLServer

erhalten Sie eine Hilfe zu den speziellen SQL-Server-Befehlen in der PowerShell. Wollen Sie alle Methoden für ein bestimmtes Objekt anzeigen, zum Beispiel bei der Verwaltung der Datenbanken, verwenden Sie:

Set-Location SQL:\<Servername>\DEFAULT\Databases

Get-Item . | Get-Member -Type Methods

Mit speziellen SQL-Befehlen arbeiten

Alle Eigenschaften für eine Variable, die auf ein SMO-Tabellenobjekt festgelegt ist, zeigen Sie mit folgenden Befehlen an:

$Var = New-Object Microsoft.SqlServer.Management.SMO.Table

$Var | Get-Member -Type Properties

Sie können mehrere Instanzen von SQL Server 2012 auf einem Server installieren. Auf diese Instanzen können Sie auch in der PowerShell zugreifen und zu diesen navigieren wie mit normalen Laufwerken, zum Beispiel mit SQLSERVER:\SQL\<Servername>\<Instanz>.

Jeder Server hat eine Standardinstanz. Sie geben bei der Installation keinen Namen für die Standardinstanz an. In den meisten Fällen ist der Name MSSQLSERVER. Wenn Sie in einer Verbindungszeichenfolge nur einen Computernamen angeben, verbindet Sie die PowerShell mit der Standardinstanz. Alle anderen Instanzen auf dem Server sind benannte Instanzen.

Der SQL-Server-Anbieter implementiert ein Laufwerk mit der Bezeichnung SQLSERVER: Sie können etwa mit dem Ordner SQLSERVER:\SQL Pfade beginnen. Der erste Teil eines SQLSERVER:\SQL-Pfads ist SQLSERVER:\SQL\<Name des Servers>\<Instanz>. Der Pfad zur Vendor-Tabelle im Purchasing-Schema der AdventureWorks2012-Datenbank in einer Standardinstanz auf dem lokalen Server ist zum Beispiel

SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012\Tables\Purchasing.Vendor

Alle Datenbanken einer Instanz können Sie sich ebenfalls anzeigen lassen. Mit -force zeigt das CMDlet auch die Systemdatenbanken an. Der Vorteil der Anzeige in der PowerShell ist beispielsweise, dass Sie auf einen Blick den Status und die Sortierreihenfolge sowie die eingestellte Sicherungsmethode sehen:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases

Get-ChildItem -force

Nach der Navigation zu einem Knoten können Sie Informationen abrufen oder Verwaltungsaufgaben durchführen. Verwenden Sie das Cmdlet Invoke-Sqlcmd, um Daten in Tabellen und Sichten aus der PowerShell abzufragen oder zu ändern. Mit dem Cmdlet Get-Member zeigen Sie die für Objekte oder Objektklassen verfügbaren Möglichkeiten an. Sie können sich auch die Eigenschaften ausgeben lassen:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases

Get-Item . | Get-Member -Type Properties

In folgendem Beispiel wird zum Knoten AdventureWorks2012 in einem SQLSERVER:-Pfad navigiert, und es werden die Objekteigenschaften angezeigt:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012

Get-Item . | Get-Member -Type Properties

Um eine Liste der Tabellen aus dem Sales-Schema in AdventureWorks2012 abzurufen, verwenden Sie den folgenden Befehl:

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2012\Tables

Get-ChildItem | where {$_.Schema -eq "Sales"}

Sie haben auch die Möglichkeit, T-SQL Befehle in der PowerShell einzugeben, genauso wie bei Abfragen im Managementstudio oder über sqlcmd.exe. Invoke-Sqlcmd ist ein SQL Server-Cmdlet, das Skripts ausführt, die Anweisungen aus den Sprachen (Transact-SQL und XQuery) und Befehlen enthalten können. Ausführliche Hilfen zum Thema finden Sie bei Microsoft. Wollen Sie zum Beispiel eine Abfrage erstellen, verwenden Sie folgende Syntax:

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "sql\erp"

Nicht alle sqlcmd-Befehle sind in Invoke-Sqlcmd verfügbar. Die nicht unterstützten Befehle sind zum Beispiel: :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace, und :serverlist. (mje)