Sunday 9 October 2011

Is your Microsoft Security Essentials not working with the Windows firewall

Interesting problem if you like that sort of thing.

It doesn't seem to be documented anywhere on Microsoft's site but Microsoft Security Essentials uses the Windows Update service to perform its own updates, if the Windows firewall is used it is possible to allow the Windows Update service to access the internet even though it is just one of the services hosted by a single instance of svchost.exe.


It is still possible to uses a local WSUS server with MSE updating from Microsoft without any issues.

On the whole MSE has my PC booting much quicker than it ever did with AVG so I'm happy, if only it had been more obvious why it couldn't update.

Saturday 17 September 2011

Windows 8 Developer Preview

You have to take in to account this is a developer preview to get people on board with Metro applications so much of what I don't like is probably already being addressed.

Its all very nice and fresh but is clearly aimed at touch devices, here lies the problem the interaction between the metro GUI and the 'old' explorer interface is a little hit and miss.

The lack of a start menu will affect the corporate market as I can't see organisations suddenly deploying touch devices to desktops just to take advantage of Metro applications.

There is some cool stuff though, the introduction of WinRT, the improvements to hibernation, a refresh build option to restore your PC to its original state and the security improvements are all pretty nice but I still can't but help but this this feels like another Windows ME. For the desktop at least, I think Windows 8 will be a success on touch devices, just not convinced about Windows 8 for everyone else.

Anyway, why not try it for yourself.

Tuesday 31 May 2011

PSN all up and running by the end of the week.

Lets hope they mean it, it seems like ages since the Playstation Store was available.

Tuesday 24 May 2011

SCOM 2007 SP1 per rule notifications

None of this is necessary if using SCOM 2007 R2 as the GUI can perform the steps this script does, subscriptions created with this script can be opened with an R2 console and look as you would expect, however if the subscription is opened from an SP1 console the XML will break and the subscription will no longer work as expected.
After spending ages trying to work out how to create per rule notifications and then discovering it wasn't possible using the GUI I resorted to writing my own Powershell script complete with GUI (also written in powershell, thanks to PrimalForms for the GUI) for this very task. Feel free to use this as you see fit. To use the script you first need to edit change the $RMS to be your RMS server. There is some tweaking required if you want to respond to a monitor instead. I'll post the amendments at a later date.


#Generated Form Function
function GenerateForm {
########################################################################
# Code Generated By: SAPIEN Technologies PrimalForms v1.0.2.0
# Generated On: 20/10/2009 09:55
# Generated By: ########################################################################

$RMS = "scomprodrms"

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$button4 = New-Object System.Windows.Forms.Button
$textBox2 = New-Object System.Windows.Forms.TextBox
$listBox2 = New-Object System.Windows.Forms.ListBox
$label2 = New-Object System.Windows.Forms.Label
$textBox1 = New-Object System.Windows.Forms.TextBox
$listBox1 = New-Object System.Windows.Forms.ListBox
$label1 = New-Object System.Windows.Forms.Label
$button1 = New-Object System.Windows.Forms.Button
#endregion Generated Form Objects

#----------------------------------------------
#Generated Event Script Blocks
#----------------------------------------------
#Provide Custom Code for events specified in PrimalForms.
$button1_OnClick=
{
#Populate listboxes
#TODO: Place custom script here
write-host Searching...

    $listbox1.items.clear()
    $listbox2.items.clear()

    if ((Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.EnterpriseManagement.OperationsManager.Client'}) -eq $null)
    {
        Write-Host "Initializing shell for operations manager..."
        Write-Host "Add Microsoft.EnterpriseManagement.OperationsManager.Client snap in."
        Add-PSSnapin Microsoft.EnterpriseManagement.OperationsManager.Client -ErrorAction SilentlyContinue -ErrorVariable Err
   
        if ($Err) { $(throw write-Host $Err) }
    }
   
    if ((Get-ManagementGroupConnection | Where-Object {$_.ManagementServerName -eq $RMS}) -eq $null)
    {
        Write-Host "Connect to Management Server: $RMS"
        New-ManagementGroupConnection $RMS -ErrorAction SilentlyContinue -ErrorVariable Err
        if ($Err) { $(throw write-Host $Err) }
    }
   
    if ((Get-PSDrive | Where-Object {$_.Name -eq 'Monitoring'}) -eq $null)
    {
        Write-Host "Create Monitoring drive from Provider."
        New-PSDrive -Name: Monitoring -PSProvider: OperationsManagerMonitoring -Root: \ -ErrorAction SilentlyContinue -ErrorVariable Err
        if ($Err) { $(throw write-Host $Err) }
        Write-Host "Operations manager shell initialized."
        Write-Host
    }
   
    Set-Location Monitoring:\$RMS
   
    $rules = Get-Rule | where {$_.displayname -match $textbox1.text}

    foreach ($r in $rules)
        {
        $listbox1.items.add($r.displayname)
        }
       
    $notifications = Get-NotificationRecipient | where {$_.name -match $textbox2.text}
   
    foreach ($n in $notifications)
        {
        $listbox2.items.add($n.name)
        }
       
}

$button4_OnClick=
{
#Create subscription
#TODO: Place custom script here
    ## load SDK assemblies
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.EnterpriseManagement")
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.EnterpriseManagement.Configuration")
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.EnterpriseManagement.ConnectorFramework")
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.EnterpriseManagement.Monitoring")

    ## connect to management group
    $ManagementGroup = New-Object Microsoft.EnterpriseManagement.ManagementGroup($RMS)
    $ManagementGroup.Reconnect()
   
    write-host "Getting rule id for"
    write-host $listbox1.selecteditem
    $MonitoringRuleId = (Get-Rule | where {$_.displayname -eq $listbox1.selecteditem}).id.tostring()
    write-host $MonitoringRuleId

    write-host   
   
    write-host "Getting recipient details for"
    write-host $listbox2.selecteditem
    $recipient = $ManagementGroup.GetNotificationRecipient($listbox2.selecteditem)
    write-host $recipient
   
   
    $config = New-Object Microsoft.EnterpriseManagement.Administration.AlertChangedSubscriptionConfiguration([Microsoft.EnterpriseManagement.Administration.AlertSubscriptionConfigurationType]::Any)

    #$config.Criteria = "<SimpleExpression><ValueExpression><Property>RuleId</Property></ValueExpression><Operator>Equal</Operator><ValueExpression><Value>$MonitoringRuleId</Value></ValueExpression></SimpleExpression>"
    $config.Criteria = "<And><Expression><SimpleExpression><ValueExpression><Property>RuleId</Property></ValueExpression><Operator>Equal</Operator><ValueExpression><Value>$MonitoringRuleId</Value></ValueExpression></SimpleExpression></Expression><Expression><SimpleExpression><ValueExpression><Property>ResolutionState</Property></ValueExpression><Operator>Equal</Operator><ValueExpression><Value>0</Value></ValueExpression></SimpleExpression></Expression></And>"

    $config.ExpirationStartTime = Get-Date
    $config.PollingIntervalMinutes = 1

    $NewGuid = [System.Guid]::NewGuid()
    $NewGuid = $NewGuid.ToString().Replace('-', '_')

    $Subscription = New-Object Microsoft.EnterpriseManagement.Administration.AlertNotificationSubscription("STACustomSubscription$NewGuid", $config)

    $Subscription.DisplayName = "****  Do not open in OpsMgr GUI - " + $listbox1.selecteditem + " - " + $listbox2.selecteditem
    $Subscription.ToRecipients.Add($recipient)

#Individual actions are no longer used as we now add all actions to the subscription
#    $smtpAction = $ManagementGroup.GetNotificationAction("DefaultSmtpAction")
#    $alarmpointAction = $ManagementGroup.GetNotificationAction("Cmd0d2dcdf3_455b_4641_8bd9_6b2c6f64bce7")

    $ManagementGroup.GetNotificationActions() | foreach {
            $Subscription.Actions.Add($_)
    }
   
    $ManagementGroup.InsertNotificationSubscription($Subscription)
    write-host
    write-host Subscription created as $Subscription.DisplayName
    write-host
    write-host To create a new subscription enter new criteria
    write-host
   
}

#----------------------------------------------
#region Generated Form Code
$form1.Text = 'SCOM Rule Notifications'
$form1.Name = 'form1'
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 573
$System_Drawing_Size.Height = 284
$form1.ClientSize = $System_Drawing_Size

$button4.TabIndex = 6
$button4.Name = 'button4'
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 144
$System_Drawing_Size.Height = 23
$button4.Size = $System_Drawing_Size
$button4.UseVisualStyleBackColor = $True

$button4.Text = 'Create Subscription'

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 204
$System_Drawing_Point.Y = 234
$button4.Location = $System_Drawing_Point
$button4.DataBindings.DefaultDataSourceUpdateMode = 0
$button4.add_Click($button4_OnClick)

$form1.Controls.Add($button4)

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 275
$System_Drawing_Size.Height = 20
$textBox2.Size = $System_Drawing_Size
$textBox2.DataBindings.DefaultDataSourceUpdateMode = 0
$textBox2.Name = 'textBox2'
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 73
$System_Drawing_Point.Y = 38
$textBox2.Location = $System_Drawing_Point
$textBox2.TabIndex = 1

$form1.Controls.Add($textBox2)

$listBox2.FormattingEnabled = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 239
$System_Drawing_Size.Height = 134
$listBox2.Size = $System_Drawing_Size
$listBox2.DataBindings.DefaultDataSourceUpdateMode = 0
$listBox2.Name = 'listBox2'
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 297
$System_Drawing_Point.Y = 85
$listBox2.Location = $System_Drawing_Point
$listBox2.TabIndex = 5

$form1.Controls.Add($listBox2)

$label2.TabIndex = 5
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 100
$System_Drawing_Size.Height = 23
$label2.Size = $System_Drawing_Size
$label2.Text = 'Recipients'

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 18
$System_Drawing_Point.Y = 41
$label2.Location = $System_Drawing_Point
$label2.DataBindings.DefaultDataSourceUpdateMode = 0
$label2.Name = 'label2'

$form1.Controls.Add($label2)

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 275
$System_Drawing_Size.Height = 20
$textBox1.Size = $System_Drawing_Size
$textBox1.DataBindings.DefaultDataSourceUpdateMode = 0
$textBox1.Name = 'textBox1'
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 73
$System_Drawing_Point.Y = 12
$textBox1.Location = $System_Drawing_Point
$textBox1.TabIndex = 0

$form1.Controls.Add($textBox1)

$listBox1.FormattingEnabled = $True
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 239
$System_Drawing_Size.Height = 134
$listBox1.Size = $System_Drawing_Size
$listBox1.DataBindings.DefaultDataSourceUpdateMode = 0
$listBox1.Name = 'listBox1'
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 85
$listBox1.Location = $System_Drawing_Point
$listBox1.TabIndex = 4

$form1.Controls.Add($listBox1)

$label1.TabIndex = 1
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 100
$System_Drawing_Size.Height = 23
$label1.Size = $System_Drawing_Size
$label1.Text = 'Rules'

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 18
$System_Drawing_Point.Y = 15
$label1.Location = $System_Drawing_Point
$label1.DataBindings.DefaultDataSourceUpdateMode = 0
$label1.Name = 'label1'

$form1.Controls.Add($label1)

$button1.TabIndex = 3
$button1.Name = 'button1'
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 125
$System_Drawing_Size.Height = 23
$button1.Size = $System_Drawing_Size
$button1.UseVisualStyleBackColor = $True

$button1.Text = 'Get Data from SCOM'

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 368
$System_Drawing_Point.Y = 35
$button1.Location = $System_Drawing_Point
$button1.DataBindings.DefaultDataSourceUpdateMode = 0
$button1.add_Click($button1_OnClick)

$form1.Controls.Add($button1)

#endregion Generated Form Code

#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
write-host Watch both the powershell console and the GUI for informational messages
GenerateForm

Wednesday 18 May 2011

PSN is back, oh not its not

Could have been worse, can't think how right now.

The PSN details stolen included email address and date of birth.

Now for a quiz

What details do you need to reset your password?

Correct, email address and date of birth.

Story on engadget is here.

Sunday 15 May 2011

QNAP NAS

I have been using a QNAP TS-210 for quite a while now and I have to say I couldn't live without it. It is a two disk NAS device and offers all the features you would expect of its more expensive siblings including the ability to act as an iscsi target. It compromises in places, no hot swap disks or dual NICs but for a home environment I can live with that.


It is an intriguing device, it has the feel of a closed system but if you look at little hardware you can delve deeper and customise it as much as you want including installing Debian. I haven't had the need to do this as the supplied software is sufficient for my needs (at the moment).

The one minor complaint I have had was when QNAP updated the uPNP/DLNA server to TwonkyMedia v5, this removed the ability to have complex trees for large media collections. In steps QNAP QPKG which still offered Twonky 4, success I have my trees back again.

Do you have a QNAP device, what model do you have any what do you think.

PSN coming back online

and a mandatory firmware update to boot. At least we should get online gaming back soon. More information can be found here.

Saturday 7 May 2011

LastPass and PSN

Both LastPass and PSN have been victims of security attacks recently but can we trust companies and cloud services with our data. I hope so but they all need to get better at securing the data in the first place.

Unencrypted passwords on PSN, why oh why, they should never have stored the password. To do it properly they should really have only stored it as a hash. I wonder how many other companies are now starting to panic that they are storing customer passwords themselves.

Saturday 30 April 2011

First post

The first post at the new musings of Chris blog. I will be posting about anything and everything that interests me.