How to use Powershell to remotely disable a networkadapter on an array of computers

Posted by O.Sommer

Today I had the challenge to disable a specifically named NIC on a larger number of Hyper-V hosts, because that card was causing issues with the cluster compatibility check when joining those Nodes to a Windows Hyper-V Cluster.
I found that disabling 64 Networkadapters on 64 Servers would take a while if you use RDP to remote into each server, so I wrote this little script to automate this using Remote Powershell, which is enabled by default if those computers are Part of a domain, or I enabled it during the deployment phase, which I can not remember right now:

# ask for Admin password
$cred = Get-Credential -Credential hypercluster\Administrator
# run through all i nodes and disable USB NIC
for ($i = 1;$i -le 64;$i++){
Echo Node$i
Enter-PSSession -ComputerName Node$i -Credential $cred
$usbnic = Get-WmiObject win32_networkadapter | where {$_.name -eq "IBM USB Remote NDIS Network Device"}
$usbnic.disable()
}
# exit remote Powershell
exit


EDIT:
This is an optimized version of the upper script and I also added a line that disables all disconnected networkcards:

# ask for Admin password
$cred = Get-Credential -Credential hypercluster\Administrator
# run through all i nodes and disable USB NIC
for ($i = 1;$i -le 64;$i++){
Echo Node$i
Enter-PSSession -ComputerName Node$i -Credential $cred
(Get-WmiObject win32_networkadapter -ComputerName Node$i | where {$_.name -eq "IBM USB Remote NDIS Network Device"}).Disable()
# use the following lien to disable all disconnected (unpluged networkcable) NICs
# (Get-WmiObject win32_networkadapter -ComputerName Node$i -Filter 'NetConnectionStatus= 7').Disable()

 

Edit2:
To shutdown an array of servers via Powershell i used this version of the script:

# ask for Admin password
$cred = Get-Credential -Credential hypercluster\Administrator
# run through all i nodes and shutdown each one
for ($i = 1;$i -le 64;$i++){
Echo Node$i
stop-Computer –ComputerName node$i –Credential $cred –force

Essentials 2012 R2 kann als Hyper-V Host installiert werden (…aber)!

Posted by O.Sommer

Mit der 2012 R2 Version kann man als Besitzer einer Lizenz für Essentials 2012 R2 diese Lizenz für eine 1+1 Virtualisierung verwenden!

Dabei gibt es folgendes zu beachten:

  1. Essentials 2012 R2 kann als Hostbetriebssystem auf der physikalischen Hardware installiert werden
  2. Auf dieser physikalischen Instanz darf die Hyper-V Rolle aktiviert werden
  3. dieselbe Lizenz darf anschließend zur Installation einer (!!!) virtuellen Instanz von Essentials 2012 verwendet werden

ABER dabei gibt es auch folgendes zu beachten:

Auf einem physikalischen Server der mittels einer Windows Server 2012 R2 Essentials Lizenz lizensiert wurde darf EINZIG eine Essentials 2012 R2 VM als Gast laufen, also KEINE weitere Server oder Client (z.B. Win7/8) Instanz betrieben werden, selbst wenn es dafür eine separat erworbene Lizenz gibt!
Mit anderen Worten: Essentials 2012 R2 Hosts mit Hyper-V Rolle (oder einer anderen Hardware Virtualisierungstechnologie) erlauben Lizenztechnisch nur den Betrieb EINER einzigen VM und diese MUSS Essentials 2012 R2 sein!

Dies soll die Virtualisierung von Essentials 2012 R2 erleichtern, damit Kunden, welche lediglich eine Essentials 2012 R2 Lizenz erwerben, trotzdem Technologien wie Hyper-V Replika und LiveMigration verwenden können:

  • um zu einem zweiten eigenen Server für Ausfallsicherheit gegen Hardwarefehler zu replizieren
  • um im Falle eines Hardwarewechsels eine einfache und schnelle Migration ohne Betriebsunterbrechung gewährleisten zu können
  • um zu einem Privat Cloud Hoster (z.B. Microsoft Azure oder meiner Hosting Firma der 3can.de) zu replizieren um den Server gegen den Ausfall der Hardware des Kunden oder sogar dem Ausfall der gesamten Infrastruktur des Kunden zu sichern.

Besonders letzteres Szenario ist sehr interessant, da hiermit der Essentials 2012 R2 Server des Kunden zum einen außer Haus des Kunden gesichert werden kann, aber auch der Geschäftsbetrieb des Kunden sichergestellt werden kann sollte einmal die Basisinfrastruktur des Kunden massiv gestört werden.
(Sturm, Überschwemmung, Feuer, Diebstahl, etc.)

Folgende Vorgehensweise zum Setup eines Essentials basierten Hyper-V Hosts ist mir von einem US Kollegen beschrieben worden (habe dies aber bisher selber noch nicht praktisch durchgeführt) und wird lizenztechnisch von Microsoft unterstützt (supported):

  1. Complete OS installation phase on the physical server
  2. Cancel the role configuration wizard
    1. To prevent it from restarting, from PowerShell enter:
      dism /online /disable-feature:Microsoft-Windows-ServerEssentials-ServerSetup
  3. Unpin Dashboard shortcut from the Taskbar
  4. Start the Server Manager console and remove roles/features:
    1. File and Storage Services: BranchCache, DFS
    2. Web Server (IIS)
    3. Windows Server Essentials Experience
    4. .NET Framework 4.5 Features: ASP.NET 4.5
    5. Group Policy Management
    6. BranchCache
    7. Ink and Handwriting Services
    8. Media Foundation
    9. Remote Server Administration Tools
    10. Windows Process Activation Service
  1. Start the Server Manager console
    1. Add the Hyper-V role
  1. Create any desired Storage Spaces to store VHDX files
  2. Start the Hyper-V Manager console
    1. Optionally enable Hyper-V Replica and Live Migration
    2. Create a virtual switch connected to a physical NIC
    3. Create a new virtual machine

i. Create a “Generation 2” VM (optional but recommended)

ii. Configure at least 4GB of RAM

iii. Configure at least 2 virtual hard disks (optional but recommended)

    1. Start the VM and install Essentials normally

 

Die lizenztechnisch relevanten Passagen aus der Eula habe ich hier einmal in der englischen Originalversion angehangen und markiert:

clip_image002

 

Sollte später einmal mehr als eine VM benötigt werden, so kann man z.B. durch Zukauf einer Windows Server Standard Edition aus dem Essentials basierten Host einen Standard basierten Host machen, der dann auch mehr als eine einzige VM erlaubt, lizenztechnisch werden dabei dann bis zu 2 Server VMs mit der sogenannten 1+2 Lizensierung von der Standard Lizenz abgedeckt

Alle Treiber aus den Windows Deployment Services (WDS) löschen

Posted by O.Sommer

In der WDS Konsole kann man leider kein Multiselect oder STRG+A oder so bei den Treibern machen wenn man mehr als einen oder alle installierten Treiber entfernen möchte.

Nach erfolgloser Verwendung des Powershell Befehls

Remove-WdsDriverPackage

der immer einen Fehler beim Versuch die Pakete zu löschen geworfen hat, selbst wenn ich

get-WdsDriverPackage | Remove-WdsDriverPackage

versuchte.

Habe ich nach kurzer suche folgenden Forumsbeitrag mit der Lösung gefunden:

http://social.technet.microsoft.com/Forums/windowsserver/en-US/3ec060a2-ab0b-4504-97bd-3532fb5ab5d5/delete-all-drivers-wds?forum=winserversetup

In the MMC, right click on the top level "Drivers" node
and
select "Delete Driver packages".

This will launch the package search dialog box.
Hit the "Search for Packages" button (without entering any search criteria.)
This will list all drives on the server, and select all drivers by default.
Then hit the "Delete" button.
This will remove all drivers from the server.

Essentials Rolle funktioniert nur in Single Domain Controller Umgebungen

Posted by O.Sommer

Die seit Server 2012 R2 als Rolle auch in den Standard und Datacenter Versionen verfügbare Rolle “Windows Server Essentials”, welche unter anderem das Client Backup und die Remote Web App 8ehemals Remote Web Arbeitsplatz) mitbringt, ist aktuell nur in umgebungen mit nur einem Domänen Controller zu betreiben!

Es handelt sich anscheinend um eine während der Entwicklung getroffene Entscheidung die im beteiligten Code nicht einfach zu korrigieren ist, es werde aber an einem Hotfix oder Patch oder ähnliches gearbeitet.

Insbesondere haben die Assistenten des Essentials Dashboards massive Probleme mit mehreren DCs und verweigern die Fertigstellung sobald mehrere DCs im AD DS vorhanden sind.

Hier eine aktuelle Aussage des MS Supports dazu:

Unfortunately, Every time the Essentials Services integration is run, it checks for Multiple DC’s and since multiple 
DC’s are blocked for now, the wizard won’t finish. In other words, even if just keep one domain controller and run the
wizards, then promote another DC and try to re-configure any of the integration wizards, it will still fail.
 
I understand that this certainly is not a good option, but let me assure you that work is going on in the attempt to 
fix this behavior. There is no time frame however.
 
The supportability of the integration services with just one DC is documented in : 
http://blogs.technet.com/b/sbs/archive/2013/11/04/services-integration-overview-for-windows-server-2012-r2-essentials-part-1.aspx
 
Snippet:
 
--------------------------------------------------------------------------------------------------------
You should be aware of the following before you deploy Services Integration features:
1.     Windows Azure Active Directory integration will be turned on automatically when you turn on either 
Office 365 or Windows Intune. This is because they both leverage Windows Azure Active Directory as a
common identity platform.
2.     Currently, the Services Integration features, including Windows Azure Active Directory integration, 
Office 365 integration, Windows Intune integration, and on-premises Exchange integration, are only
supported in a single domain controller environment. In addition, the integration wizard must be run
on a domain controller.
--------------------------------------------------------------------------------------------------------
 
Please be assured that we are working on this known issue and are expecting a fix or workaround on same.

Windows Server 2012 Essentials MVA Kurs online

Posted by O.Sommer

Seit einigen Tagen sind nicht nur die Videos

Windows Server Essentials Edition –Microsoft Virtual Academy Germany Videos
http://channel9.msdn.com/Series/Windows-Server-Essentials-Edition-Microsoft-Virtual-Academy-Germany

des vom Team von TrinityComputer.de entwickelten Microsoft Virtual Academy (MVA) Kurses zum Essentials Server online, sondern auch der MVA Kurs an sich:

Microsoft Virtual Academy
Windows Server Essentials Edition
http://www.microsoftvirtualacademy.com/training-courses/windows-server-essentials-edition

image

Windows Server Essentials Media Pack veröffentlicht

Posted by O.Sommer

Microsoft hat gestern die englische Version “Windows Server Essentials Media Pack” zum Download auf das MS Download Center gestellt:

Windows Server Essentials Media Pack
http://www.microsoft.com/downloads/details.aspx?FamilyID=3eb8c48b-633a-4b43-9273-f170133f1939

Damit lässt sich bei Windows Server 2012 Essentials die Media Streaming Funktionalität die viele vom, leider eingestellten, Homeserver kennen und lieben wieder aktivieren!

Dieses Update ist mehrsprachig und sollte sich daher auch auf deutschsprachigen Servern installieren lassen.

SBS 2011 Remote Web App (RWA) Fehler mit IE11 unter Windows 8.1?

Posted by O.Sommer

Unter Windows 8.1 mit dem Internet Explorer 11 sieht man nachdem man sich auf dem Small Business Server 2011 am RWA angemeldet hat für den Bruchteil einer Sekunde den RWA wird dann aber auf eine 404 Fehlermeldung  weitergeleitet:

Serverfehler

404 - Datei oder Verzeichnis wurde nicht gefunden.

Die gesuchte Ressource wurde möglicherweise entfernt oder umbenannt, oder sie steht vorübergehend nicht zur Verfügung.

image

Dieses Problem basiert auf einem serverseitigen Problem des RWA kann aber derzeit clientseitig relativ einfach umgangen werden:

Dazu muss die RWA Adresse (URL) in die liste der Websites der Kompatibilitätsansicht hinzufügen.
Hierzu im IE11 auf das kleine Zahnrad Symbol oben rechts in der Ecke klicken:

image

oder über ggf. ALT zum Einblenden des Menüs im IE11 und dann Extras, sowie (in beiden Fällen) “Einstellungen der Kompatibilitätsansicht” auswählen:

image

Danach funktioniert dann auch die RWA Seite wieder:

image

Dieser Workaround ist, wie heute nach Diskussion mit uns MVPs im Technet Forum publiziert, aktuell auch der von der Product Group empfohlene Weg das Problem bis zu einer serverseitigen Lösung durch ein zukünftiges Update zu umgehen:

Remote Web Access website does not work correctly on Internet Explorer 11

http://social.technet.microsoft.com/Forums/en-US/38b33b43-c5c4-4632-9c69-2b9b8c35eca9/remote-web-access-website-does-not-work-correctly-on-internet-explorer-11?forum=smallbusinessserver2011essentials

Windows Server 2012 Essentials connect Assistent Crash

Posted by O.Sommer

Ich hatte einen Computer von Windows 7 nach Windows 8 und dann mit dem Pro Pack upgedatet um das Media Center Feature zu erhalten.
Als ich dann probierte den Windows Server Essentials connect Assistenten auszuführen crashte dieser nur und ich konnte die Maschine nicht dem Client backup hinzufügen.

Im ClientDeploy.log unter C:\ProgramData\Microsoft\Windows Server\Logs findet sich:

[3876] 121107.194235.2285: ClientSetup: LookupAccountSid (computerName = [], sid = [S-1-5-32-544])
[3876] 121107.194235.2285: ClientSetup: NetLocalGroupAddMember (server = [], groupName = [Administrators], sidMember = [S-1-5-21-452769647-1665919795-2316062235-1116])
[3876] 121107.194235.3067: ClientSetup: LookupAccountSid (computerName = [], sid = [S-1-5-32-555])
[3876] 121107.194235.4318: ClientSetup: !!!FATAL!!! Unhandled Exception: System.ComponentModel.Win32Exception (0x80004005): No mapping between account names and security IDs was done at Microsoft.WindowsServerSolutions.ClientSetup.NativeMethods.LookupAccountSid(String computerName, SecurityIdentifier sid)

Troubleshooting mit MS zusammen hat Folgendes ergeben:

Thanks for opening this this bug. The root cause of this bug is sid S-1-5-32-555 is not recognized by local component.  It may happen when run client connector after upgrade a machine with Windows 8 Pro Pack .  We already have a bug to track this issue. And there is a workaround for this issue: Skip domain join during client deployment by adding a registry key.  Please add this key and try again.

reg add "HKLM\SOFTWARE\Microsoft\Windows Server\ClientDeployment" /v SkipDomainJoin /t REG_DWORD /d 1

 

Die Ursache ist schlicht, dass beim Upgrade einige lokale Gruppen nicht erstellt werden, die der connect Assistent erwartet. Dies hat Microsoft im KB Artikel

http://support.microsoft.com/kb/2850661/en-us

zwar nicht explizit für den Essentials beschrieben, aber mit dem Rollup Fix aus KB2855336 behoben:

2855336 Updaterollup für Windows RT, Windows 8 und Windows Server 2012: Juli 2013
http://support.microsoft.com/kb/2855336

DirectAccess für Essentials 2012 via Powershell Skript

Posted by O.Sommer

Die von Microsoft in der Technet unter

http://technet.microsoft.com/en-us/library/jj204618.aspx

und von meinem MVP Kollegen aus England Robert Pearman unter

http://titlerequired.com/2012/10/15/enable-directaccess-on-windows-server-2012-essentials/

bebilderte Anleitung zur Konfiguration von DirectAccess für Essentials 2012 Server hat einen nicht unwesentlichen Nachteil:

Die Anleitungen sind beide für englischsprachige Server.
Insbesondere das in der Theorie nahezu automatisierte Powershellskript am Ende des TechentArtikel zur Konfiguration eines Essentials 2012 funktioniert auf deutschen Systemen nicht und wirft diverse Fehler.

Mit etwas Einsatz kann man aber die richtigen deutschen Namen für Sicherheitsgruppen und Gruppenrichtlinen sowie Firewallregeln herausbekommen und in dem Skript korrigieren.

Damit ist es mir gelungen mit dem Powershellskript, sowie den im TechNet Artikel beschriebenen Vorarbeiten

  • Follow the procedure in Step 3: Prepare a certificate and DNS record for the network location server to enroll a certificate named DirectAccess-NLS.contoso.com (where contoso.com is replaced by your actual internal domain name), and to add a DNS record for the network location server (NLS).
  • Add a security group named DirectAccessClients in Active Directory, and then add client computers for which you want to provide the DirectAccess functionality.

eine funktionierende Essentials 2012 Umgebung mit DirectAccess Zugriff zu konfigurieren:

image

Das von mir (mehrfach) verwendete Skript lautet:

#Add Remote Access role if not installed yet
$ra = Get-WindowsFeature RemoteAccess
If ($ra.Installed -eq $FALSE) { Add-WindowsFeature RemoteAccess }

#Server may need to restart if you installed RemoteAccess role in the above step

 

#Set the internet domain name to access server, replace contoso.com below with your own domain name
$InternetDomain = "remote.sbsfaq.de"
#Set the SG name which you create for DA clients
$DaSecurityGroup = "DirectAccessClients"
#Set the internal domain name
$InternalDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name

#Set static IP and DNS settings
$NetConfig = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true"
$CurrentIP = $NetConfig.IPAddress[0]
$SubnetMask = $NetConfig.IPSubnet | Where-Object{$_ -like "*.*.*.*"}
$NetConfig.EnableStatic($CurrentIP, $SubnetMask)
$NetConfig.SetGateways($NetConfig.DefaultIPGateway)
$NetConfig.SetDNSServerSearchOrder($CurrentIP)

#Get physical adapter name and the certificate for NLS server
$Adapter = (Get-WmiObject -Class Win32_NetworkAdapter -Filter "NetEnabled=$true").NetConnectionId
$Certs = dir cert:\LocalMachine\My
$nlscert = $certs | Where-Object{$_.Subject -like "*CN=DirectAccess-NLS*"}

#Add regkey to bypass CA cert for IPsec authentication
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\IKEEXT\Parameters -Name ikeflags -Type DWORD -Value 0x8000

#Install DirectAccess.
Install-RemoteAccess -NoPrerequisite  -DAInstallType FullInstall  -InternetInterface $Adapter  -InternalInterface $Adapter -ConnectToAddress $InternetDomain -nlscertificate $nlscert -force

#Restart Remote Access Management service
Restart-Service RaMgmtSvc

#Remove the unnecessary IPv6 prefix GPO
$key = Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\RemoteAccess\config\MachineSIDs | Where-Object{$_.GetValue("IPv6RrasPrefix") -ne $null}
Remove-GPRegistryValue -Name "DirectAccess-Servereinstellungen" -Key $key.Name -ValueName IPv6RrasPrefix
gpupdate

#Set the appropriate security group used for DA client computers. Replace the group name below with the one you created for DA clients
Add-DAClient -SecurityGroupNameList $DaSecurityGroup
Remove-DAClient -SecurityGroupNameList "Domänencomputer"
Set-DAClient -OnlyRemoteComputers Disabled

#Gather DNS64 IP address information
$Remoteaccess = get-remoteaccess
$IPinterface = get-netipinterface -InterfaceAlias IPHTTPSInterface | get-netipaddress -PrefixLength 128
$DNS64IP=$IPInterface[1].IPaddress
$Natconfig = Get-NetNatTransitionConfiguration

# Configure TCP and UDP firewall rules for the DirectAccess server GPO
$GpoName = 'GPO:'+$InternalDomain+'\DirectAccess-Servereinstellungen'
Get-NetFirewallRule -PolicyStore $GpoName -Displayname "Domänennamenserver (TCP eingehend)"|Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -LocalAddress $DNS64IP
Get-NetFirewallrule -PolicyStore $GpoName -Displayname "Domänennamenserver (UDP eingehend)"|Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -LocalAddress $DNS64IP

# Configure the name resolution policy settings for the DirectAccess server, replace the DNS suffix below with the one in your domain
$Suffix = '.' + $InternalDomain
set-daclientdnsconfiguration -DNSsuffix $Suffix -DNSIPAddress $DNS64IP

# Change the DNS64 configuration to listen to IP-HTTPS interface
Set-NetDnsTransitionConfiguration -AcceptInterface IPHTTPSInterface

# Copy the necessary files to NLS site folder
XCOPY 'C:\inetpub\wwwroot' 'C:\Program Files\Windows Server\Bin\WebApps\Site\insideoutside' /E
XCOPY 'C:\Program Files\Windows Server\Bin\WebApps\Site\Default.aspx' 'C:\Program Files\Windows Server\Bin\WebApps\Site\insideoutside'

# Reserve port for NAT64

Set-NetNatTransitionConfiguration –IPv4AddressPortPool @("$CurrentIP, 10000-47000")

Restart-Service winnat

 

Ich habe bisher keine negativen Folgen des mehrfachen Durchlaufes des Skriptes gefunden, lege aber trotzdem jedem die üblichen Sicherheitsmaßnahmen nahe (Backup, etc.).

Letztlich habe ich mittels der neuen “Powershell ISE” das Skript dann Abschnittsweise durchlaufen lassen, weil immer noch Fehler auftraten und ich die finden wollte:

image