Hotfix Status zweier Server vergleichen

Mit den nachfolgenden PowerShell Befehlen kann der Hotfix Status zweier Windows Clients oder Windows Servern auf einfache Art und Weise verglichen werden:

$server1 = "Server1"
$server2 = "Server2"
 
$server1Patches = get-hotfix -computer $server1 | Where-Object {$_.HotFixID -ne "File "}
$server2Patches = get-hotfix -computer $server2 | Where-Object {$_.HotFixID -ne "File "}
 
Compare-Object ($server1Patches) ($server2Patches) -Property HotFixID

SQL Server Befehle mit PowerShell: Beispiel mehrere DB’s offline setzen

Mit Hilfe von PowerShell kann über die SQL Server Management Objekt (SMO) API direkt T-SQL Befehle auf einem SQL Server ausgeführt werden. Nachfolgend zeige ich ein Beispiel wie anhand einer Liste von Datenbanknamen (Textdatei) die entsprechenden Datenbanken offline gesetzen werden können.

# Voraussetzungen: SQL Server Management Objects (SMO) Assembly laden
 
# Für SQL Server 2012 nachfolgenden PowerShell Befehl nutzen:
Import-Module SQLPS -DisableNameChecking
# Für SQL Server 2008 R2 und SQL Server 2008 die folgenden Befehle ausführen:
add-type -AssemblyName “Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ -ErrorAction Stop
add-type -AssemblyName “Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ -ErrorAction Stop
add-type -AssemblyName “Microsoft.SqlServer.SMOExtended, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ -ErrorAction Stop
add-type -AssemblyName “Microsoft.SqlServer.SqlEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ -ErrorAction Stop
add-type -AssemblyName “Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ -ErrorAction Stop
 
# Datenbankliste von Textdatei laden
$databases = Get-Content "C:\temp\DatabaseList.txt"
 
foreach ($db in $databases) {
    invoke-sqlcmd -ServerInstance localhost -Database master -Query "IF db_id('$db') is not null ALTER DATABASE $db SET OFFLINE WITH ROLLBACK IMMEDIATE"       
}
 
# Den PowerShell Provider wieder auf das Dateisystem zurücksetzen (optional)
cd C:

SharePoint Online Management Shell – Remote PowerShell

Mittels einer PowerShell Shell kann Remote auf die Office 365 Infrastruktur zugegriffen werden. Hier ein Beispiel für die Verbindung auf SharePoint Online.

Voraussetzungen
Software: Installation der SharePoint Online Management Shell –> Link
Berechtigungen Cloud: Global Administrator im Office 365 Tenant –> Link
Berechtigungen Lokal: PowerShell Shell als Administrator öffnen

# Connect with Tenant Admin
$User = "xy@domainname.com"
# Specify Tenant Admin URL
$TenantURL = "https://domainname-admin.sharepoint.com"
# Import PowerShell Module
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
# Connect to Tenant
Connect-SPOService -Url $TenantURL -Credential $User
# Connected

Beispiel

# Auslesen von Basis Informationen über jede Site Collection (ohne My Sites)
Get-SPOSite -Detailed | Export-CSV -LiteralPath C:\temp\SiteOverview.csv -NoTypeInformation

Konfiguration SharePoint Claim Mappings

Die nachfolgende Übersicht zeigt die Schritte innerhalb SharePoint 2010, die notwendig sind um eine SharePoint Applikation Claims-Based fähig zu machen.

1. Erstellen SharePoint Trusted Root Authority
Mit dem folgenden PowerShell Code (SharePoint 2010 Management Shell Konsole) wird das Signing Zertifikat des Partners innerhalb SharePoint als Trusted Root Authority definiert. Damit wird der Trust zwischen SharePoint und dem Partner (Identity Provider (IdP), ADFS etc.) aufgebaut.

$certPath = "c:\contosotokensign.cer"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("$certPath")
New-SPTrustedRootAuthority -Name "Contoso ADFS Token Signing Root Authority" -Certificate $cert

2. Zuweisung Claims
Anschliessend erfolgt die Zuweisung der einzelnen Claims. Dafür müssen innerhalb der SharePoint 2010 Management Shell Konsole die Claims (in diesem Beispiel sind es deren zwei: Emailadresse und Rolle) den entsprechenden Variablen zugewiesen werden. Diese Variablen $map1 und $map2 werden dann in Schritt 4 für die Erstellung des Providers benötigt:

$map1 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -
IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
$map2 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -
IncomingClaimTypeDisplayName "Role" -SameAsIncoming

3. Definition Realm und Sign-In URL
In diesem Schritt wird der Applikations-Realm und die Sign-In URL (für die Login-Seite) definiert.

$realm = "urn:contoso:sharepoint:portal"
$signinurl = "https://contosoadfs2.contoso.com/adfs/ls"
$certPath = "c:\contosotokensign.cer"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("$certPath")

4. Erstellen des Trusted Identity Token Issuers (Claims Provider)
Mit dem nächsten Befehl wird der eigentliche Claims Provider erstellt. Wichtig in diesem Zusammenhang ist die Definition des IdentifierClaim Attributes. Dieses definiert welches der Attribute zur Identifikation von Benutzern verwendet wird.

$ap = New-SPTrustedIdentityTokenIssuer -Name "Contoso ADFS 2.0" -Description "Contoso ADFSv2 Token Issuer" -realm $realm -ImportTrustCertificate $cert -
ClaimsMappings $map1,$map2 -SignInUrl $signinurl -IdentifierClaim $map1.InputClaimType

http://blogs.msdn.com/b/spidentity/archive/2010/01/23/claims-based-authentication-cheat-sheet-part-2.aspx

5. Erstellen/Konfiguration der SharePoint Webapplikation
Damit eine Webapplikation Claims-fähig ist muss diese über die “Claims Based” Authentication Option verfügen.

Das Erstellen kann entweder per GUI (mit Hilfe der Central Administration) oder mittels PowerShell Script vorgenommen werden.