Tag: Microsoft

HowTo: Install Roles and Features Windows Server 2008 R2 Core (Shell)

This Guide should help you to install Roles and Features on Windows Server 2008 R2 per shell or on a Windows Server 2008 R2 Core Server.

Under Windows Server 2008 you could install Roles and Features with the command OCSETUP. Since we use Windows Server 2008 R2 Microsoft used the tool called DISM (Deployment Image Servicing and Management tool).

For checking availible Server roles type:

Dism /online /get-features /format:table

To enable a Feature or a Role, in this case the DNS Server Role, you just type:

Dism /online /enable-feature /featurename:DNS-Server-Core-Role

Powershell: Get Sharepoint 2010 Site Collection Storage Usage

If you need to get the Storage Usage from a Sharepoint 2010 Site Collection, you can do this with Powershell.

Current Storage Used

1. Start SharePoint 2010 Management Shell or Powershell with the Sharepoint Snapin by:

Add-PSSnapin "Microsoft.SharePoint.PowerShell"

2. Create a new Object for a Site Collection:

$MySite = Get-SPSite http://my.sharepoint.com

3. You can now check the members of the $MySite Object:

$MySite | Get-Member (You could also use: Get-SPSite http://mysite.sharepoint.com | Get-Member)

get-spsite http://mysite.sharepoint.com | get-member

4. Now you get an output with a lot of member properties of this Site Collection Object. And you can see there is a member property called Usage, I think thats the right property. Now lets see what we get here:



Storage           : 1775819
Bandwidth         : 0
Visits            : 0
Hits              : 0
DiscussionStorage : 0

Ah there is a Storage property, lets use this to only get the used Storage:


this returns the Storage Space in Bytes. Not really use full, so we get this in Megabytes:

$MySite.Usage.Storage / 1MB



Powershell: Send Tweet

Powershell Header

For some reason your Powershell script should send a Tweet. With this function Powershell will send a message to Twitter.

function Send-Tweet($Message)
#Twitter Login
$Twitter_UserName = "yourname"
$Twitter_Password = "yourpassword"
$Twitter_URL = "https://twitter.com/statuses/update.xml?status="

$Twitter_Request = [System.Net.WebRequest]::Create($Twitter_URL + $Message)
$Twitter_Request.credentials= New-Object System.Net.NetworkCredential($Twitter_UserName,$Twitter_Password)
$Twitter_Request.method= "POST"
$Twitter_Request.contentType = "application/x-www-form-urlencoded"
$Twitter_Request.GetResponse().statusCode # return the status code of the request

You can now call this function and add a message

Send-Tweet "This is my first Tweet from Powershell"


If you need a interactive script you can simply use this (seen by Bhargav’s IT Playground)

function Send-Tweet($Message,$UserName){
if($Message-eq$null){$Message=Read-Host"Enter your tweet"}
if($Username-eq$null){$Username=read-host"Enter your twitter username"}
$Password=read-host-assecurestring"Enter your twitter password"
$marshal=[Runtime.InteropServices.Marshal] $Password=$marshal::PtrToStringAuto($marshal::SecureStringToBSTR($Password))
$request.credentials=New-Object System.Net.NetworkCredential($UserName,$Password)
$request.contentType ="application/x-www-form-urlencoded"
$request.GetResponse().statusCode # return the status code of the request}


Powershell: Parsing XML part 1

In my company, we started to use XML files as configuration files. So we use it for some configurations of servers or automation for our robots. In Powershell, there is a pretty easy way for parsing XML. In Powershell there is an object type for XML, so you just can use the get-content Cmdlet to read the XML file into the object.

$xmldata = get-content "C:\XMLFiles\mydata.xml"

When you create a function for reading XML files you also can set the XML object to global.

$global:xmldata = get-content "C:\XMLFiles\mydata.xml"

Now $xmldata is an object which includes all the data of the mydata.xml.

Let’s view the content of the mydata.xml file. We need this to understand the following commands.

<TodoList ID = "Week21"> 
<task action="create" ID="1"> 
<email>[email protected]</email> 
<task action="create" ID="2"> 
<email>[email protected]</email> 
<task action="delete" ID="3"> 
<email>[email protected]</email> 

Now we wanna get all unique Accounts listed

$xmldata.TodoList.Task | %{$_.Name} | select-object -unique

We can also create a new object for a specific Task

[Object]$xmltask2 = $xmldata.TodoList.Task | Where-Object {$_.ID -eq "2"}

Now we have a new object with data from Task ID 2. If we wanna see the name from this we just use the same command with the new object

$xmltask3 | {$_.Name}

We can do a lot more with this, but I will bring this up in the next blog posts.

Powershell: Invoke-Expression

Powershell Header

Using the Invoke-Expression Cmdlet:

The Invoke-Expression cmdlet provides one way to run a script from within Windows PowerShell.

Invoke-Expression c:\scripts\test.ps1


& c:\scripts\test.ps1

And you also can run a function in your Powershell Script by a variable. This is something really important when you work with dynamic scripts:

Invoke-Expression -command ($Function_Name)

you even can send dynamic parameters to this function:

Invoke-Expression -command ($Function_Name + ' $Function_Parameters')

Time sync problems with Hyper-V Guests

If you have time sync problems with Hyper-V Guest Systems there is a simple solution for this.


  • Time between Server and Active Directory Domain Controller is not correct
  • Can’t login because of this
  • Can’t add AD Users to local groups


To solve this problem you have to disable Time Synchronization in the Hyper-V Integration Services for each guest. Then restart the Windows Time serviceon the guest. The guests will then correctly synchronize with a domain controller.

Active Directory Schema Versions

The list of Active Directory Schema versions:

  • Windows 2000 RTM with all Service packs = Schema version 13
  • Windows Server 2003 RTM with all Service packs = Schema version 30
  • Windows Server 2003 R2 RTM with all Service packs = Schema version 31
  • Windows Server 2008 RTM with all Service packs = Schema version 44
  • Windows Server 2008 R2 RTM with all Service packs = Schema version 47

Check the schema version in the Registry:

HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\<Schema Version>

Check the schema version with dsquery:

dsquery * CN=Schema,CN=Configuration,DC=Root-Domäne -Scope Base -attr objectVersion

Cheatsheet: How to install HP Support Pack on a Server Core installation #3

This is a HowTo step-by-step guide to install the HP Support Pack on a Windows Server 2008 R2 Core installation or Hyper-v Core installation.

  1. Download the latest HP ProLiant Support Pack for Windows Server 2008 R2
  2. Eable SNMP on Windows Server 2008 R2 Core by typing start /w ocsetup SNMP-SC
  3. Extract the HP ProLiant Support Pack on a Management Machine to C:\Supportpack
    Extract HP ProLiant Support Pack
  4. Connect to the Remote Windows Server Core for example \\hyperv01\c$
    Connect to Core Server
  5. Create the folder C:\hp on the Remote Core Server
  6. Copy the files from C:\supportpack to \\hyperv01\c$\hp
    Copy HP ProLiant Support Pack
  7. On the Core Server execute C:\hp\hpsum.exe
    execute hpsum.exe
  8. Install the HP Supportpack as usual
    HP Smart Update ManagerHP Smart Update ManagerHP Smart Update ManagerHP Smart Update Manager
  9. Reboot the Server

Cheatsheet: Add roles and features to a Server Core installation #2

This are some commands to add roles and features to a Windows Server 2008 R2 Core installation.

You also can enable Remote MMC and Remote Server Manager to simply connect from a management server to the core server and add roles with GUI. This may only work within a domain environment. You can enable remote management pretty easy with the sconfig.cmd. Find out more about configuring Windows Server 2008 R2 Core installations here.

List available server roles and features:


Install, uninstall and configure Active Directory Domain Service role:


Help for dcpromo:

PS C:\> dcpromo /?

Command line parameters include:

/unattend[:filename] Used to specify the unattend operation mode or supply an unattended install script file.

Enables advanced user options.

Used to uninstall Active Directory Domain Services binaries.

/?[:{Promotion | CreateDcAccount | UseExistingAccount | Demotion}]

/?:Promotion, /?:CreateDCAccount, /?:UseExistingAccount, and /?:Demotion
will display unattend parameters applicable to the specified task. /CreateDCAccount and /UseExistingAccount:Attach are mutually exclusive.

Creates an RODC account.

Attaches the server to an RODC account.

Forcefully uninstalls Active Directory Domain Services on this domain controller. The account for the domain controller will not be deleted in the directory, and changes that have occurred on this domain controller since it last replicated with a partner will be lost.

Will display this help.

Unattend parameters can also be specified on the command-line. For example:

dcpromo.exe /ReplicaOrNewDomain:Replica

Press any key to quit ...

Install a role or feature its basically always the same:

start /w ocsetup <roleorfeature>

start /w ocsetup DNS-Server-Core-Role

Uninstall a role or feature:

start /w ocsetup <roleorfeature> /uninstall

start /w ocsetup DNS-Server-Core-Role /uninstall

Install SNMP feature:

start /w ocsetup SNMP-SC

Install Microsoft Hyper-v role:

start /w ocsetup Microsoft-Hyper-V

Cheatsheet: Configuring a Server Core installation #1

After setting up my new hardware for my LAB, I thought about installing my Hyper-V Servers as Server Core installations. After reading two minutes in some blogs and the Microsoft TechNet I decided to use the Core Editions.

Basically the setup is the same as the none Core Edition or GUI Edition. But after the installation you have to configure the server without a GUI, your only way to do the basic configuration is the command promt. Btw if you close the command prompt, you can easily recover the prompt by pressing CTRL-ALT-DELETE, click Start Task Manager, click New Task and type cmd.exe.

Windows Server 2008 R2 Core

To do the basic configuration of your Windows Server 2008 (R2) Core, you need the following commands:

Checkout the existing Hostname / Computername:

hostame or ipconfig

Change the Computername / Hostname:

netdom renamecomputer <ComputerName> /NewName:<NewComputerName>

Change the Computername / Hostname without writing the old name:

netdom renamecomputer %computername%   /NewName:<NewComputerName>

Show network interfaces:

netsh interface ipv4 show interfaces

Set Static IP Address, Subnet Mask, and Default Gateway (ID is the shown number in the Idx column when you show your network interfaces):

netsh interface ipv4 set address name="<ID>" source=static address=<StaticIP> mask=<SubnetMask> gateway=<DefaultGateway>

Set DNS Server (index= is the priority of the DNS Server):

netsh interface ipv4 add dnsserver name="<ID>" address=<DNSIP>index=1

Join a Domain:

netdom join <ComputerName> /domain:<DomainName> /userd:<UserName> /passwordd:*

Add a Domain User to the local administrator group:

net localgroup administrators /add <DomainName>\<UserName>

Change or set the product key of your server:

slmgr.vbs –ipk<productkey>

Active the server licence:

slmgr.vbs -ato

If activation is successful, no message will return in the command prompt

Configure the firewall:

netsh advfirewall

netsh advfirewall firewall set rule group="Remote Administration" new enable=yes

Enable Remote Desktop:

cscript c:\windows\system32\scregedit.wsf /ar 0

Restart the Computer:

shutdown /r /t 0

Open Task Manager with the command prompt:


List event logs:

wevtutil el

Find something in the event log:

wevtutil qe /f:<text>

List running services:

sc query


net start

List running tasks:


to active Powershell type:


For the most of this simple tasks there is also a configuration tool, which makes it very easy to do your first configuration with Windows Server 2008 Core Edition. The Tool is called sconfig, and its very simple, just start the program with the following command:


Now this will open the following configuration utility:

Windows Server Core Sconfig.cmd