
An article I wrote entitled “The SCOM Service Level Dashboard” was published in the June 2010 issue of Windows IT Pro. Quite exciting for little ‘ol me!
SCOM Service Level Dashboard
Interacting with the Windows Internal Database
Recently I was working on a client’s system which runs Windows Small Business Server 2008 which, as you probably know, uses the Windows Internal Database Engine for the versions of SharePoint and WSUS (among a few other things) that are bundled with it.
Because the Windows Internal Database Engine that ships with SBS doesn’t offer any management tools, I was kind of stuck when I needed to change the recovery on a runaway SharePoint Config database.
After doing a little bit of research I came across across an article over MySQLTips.com (http://www.mssqltips.com/tip.asp?tip=1577) that got me going in the right direction.
In order to interact with the Windows Internal Database Engine, you must first download and install the SQL Management Studio Express (http://www.microsoft.com/downloads/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b&displaylang=en).
Once that is complete, you can access the Windows Internal Database by connecting to the following (in the “server” field at the connection screen):
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
Once connected however, you may find that when trying to get to the properties of a database you are greeted with an error that says that the operation failed because the database has no owner.
Instead of messing around with the security settings of the database you can simply use standard SQL Query language in order to make the modifications you need. In my situation I just used the following to change the database recovery method:
ALTER DATABASE [DB_Name] SET RECOVERY SIMPLE
GO
Hopefully Microsoft will include more robust DB management tools out of the box in future releases of SBS.
DPM 2007 and the Windows Firewall
The following ports need to be opened to allow for successful installation and communication with the DPM 2007 agents.
TCP: 5718, 5719, 135, 88, 139, 389
UDP: 53, 88, 137, 138, 389
Protecting Local Data on a DPM 2007 Server
Recently I was attempting to use Data Protection Manager 2007 to create a protection group that included volumes directly attached to the DPM server. I was slightly dismayed to see that I couldn’t install the protection agent on the machine or select anything other than the DPM configuration database in the New Protection Group wizard.
The answer, in my case, was to enable local data protection on the DPM server by executing the following command in the Data Protection Manager Console:
1 | Set-DPMGlobalProperty -DPMServerName ServerName.Domain.Local -AllowLocalDataProtection $true |
Windows 7 RTM Installation Driver Issue
If you (or your organization) is lucky enough to get ahold of the Windows 7 RTM, you may encounter an issue that has been popping up for a small number of people.
After booting from the DVD (or USB Drive) that contains the Windows 7 installation files, and clicking Install, you will be greeted by an error message that says:
A Required CD/DVD Driver is Missing
I pounded my head against the wall for a while on this one. In my case it turned out to be a corrupt ISO file that was causing the issue, but here are some ideas for you to try before you throw your computer out a window.
(1) Download the Windows 7 ISO Verifier tool (http://www.istartedsomething.com/20090706/windows-7-iso-verifier/). It will check your ISO file, compare it to known good hashes and tell you if the image is good. Do this first!
(2) Unplug all unnecessary devices from your PC and attempt to install again.
(3) If you have a mixture of SATA and PATA devices, try to remove and / or replace the PATA devices and try to install again.
(4) Transfer the Windows 7 setup to a thumb drive (http://www.intowindows.com/how-to-install-windows-7vista-from-usb-drive-detailed-100-working-guide/), disconnect the CD / DVD-ROM and try to boot setup from that.
If that doesn’t work then post in the comments section and I will try to help you out.
Microsoft Office 2010 Technical Preview
I don’t remember where / when I applied, but last night I received an invitation to join the Microsoft Office 2010 Technical Preview!
I will post additional information about the software as I use it and learn more about its capabilities.
Information Gathering via PowerShell Script Pt. 2
Here is another script that I created while trying to hone my PowerShell skills. It prompts you for the FQDN of the computer that you want to gather information on, asks you whether you want to see the output on the screen or dump it into a text file, and then runs a bunch of WMI queries to get a good general overview of the machine in question.
# Function Definition: fnCompInfoGatherExecute Function fnCompInfoGatherExecute { # Prompt for FQDN of Computer to be Queried "Enter the FQDN of the computer you wish to query." $CompName = Read-Host " " # Prompt for Output Method " " "How would you like the output to be handled?" $MenuTopLevel = ' [1] Display on Screen [2] Output to File [3] Exit Choice' # Define Logic for Top Level Menu switch (Read-Host $MenuTopLevel) { 1 { # Define WMI Information to be Retrieved Get-WmiObject Win32_BIOS -ComputerName "$CompName" Get-WmiObject Win32_ComputerSystem -ComputerName "$CompName" Get-WmiObject Win32_DiskDrive -ComputerName "$CompName" Get-WmiObject Win32_DiskPartition -ComputerName "$CompName" Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName "$CompName" Get-WmiObject Win32_Processor -ComputerName "$CompName" } 2 { # Prompt for Output Path " " "Enter the path to the output file (i.e. C:\Output.txt)." $OutputPath = Read-Host " " # Define WMI Information to be Retrieved Get-WmiObject Win32_BIOS -ComputerName "$CompName" >> "$OutputPath" Get-WmiObject Win32_ComputerSystem -ComputerName "$CompName" >> "$OutputPath" Get-WmiObject Win32_DiskDrive -ComputerName "$CompName" >> "$OutputPath" Get-WmiObject Win32_DiskPartition -ComputerName "$CompName" >> "$OutputPath" Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName "$CompName" >> "$OutputPath" Get-WmiObject Win32_Processor -ComputerName "$CompName" >> "$OutputPath" # Open Output File C:\Windows\notepad.exe "$OutputPath" } 3 {Exit} default {"You have chosen an invalid option"; fnPause; fnADSearchMenu} } } # Call fnCompInfoGatherExecute Function fnCompInfoGatherExecute
Information Gathering via PowerShell Script Pt. 1
Here is a simple PowerShell script I wrote to gather either computer, group, or user information depending on your choices. This could easily be done with much simpler scripts, but I wanted to use it as more of a learning process in order to better understand AD queries, variable expansion, functions, and other PowerShell features.
# Function Definition: fnPause Function fnPause ($message="Press any key to continue...") { Write-Host -NoNewLine $Message $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") Write-Host "" Main_Menu } # Function Definition: fnADSearchMenu Function fnADSearchMenu { # Display Welcome Message Clear-Host "Active Directory Search Script v1.0" "Created By: Richard Raseley (Richard@Raseley.com)" " " # Display Top Level Menu Question "What type of Active Directory object would you like to search for?" # Display Top Level Menu $MenuTopLevel = ' [1] User(s) [2] Group(s) [3] Computer(s) [4] Exit Choice' # Define Logic for Top Level Menu switch (Read-Host $MenuTopLevel) { 1 {fnUserSearchMenu} 2 {fnGroupSearchMenu} 3 {fnComputerSearchMenu} 4 {Exit} default {"You have chosen an invalid option"; fnPause; fnADSearchMenu} } } # Function Definition: fnUserSearchMenu Function fnUserSearchMenu { # Display User Search Menu Question " " "What type of user information would you like?" # Display User Search Menu $MenuUserSearch = ' [1] Summary of all users in the current domain [2] Return to the main menu Choice' # Define Logic for User Search Menu switch (Read-Host $MenuUserSearch) { 1 { #Define LDAP Filter $LDAPFilter = "(objectCategory=User)" #Call fnADSearchExecute fnADSearchExecute } 2 { fnADSearchMenu } default {"You have chosen an invalid option"; fnPause; fnADSearchMenu} } } # Function Definition: fnGroupSearchMenu Function fnGroupSearchMenu { # Display Group Search Menu Question " " "What type of group information would you like?" # Display Group Search Menu $MenuGoupSearch = ' [1] Summary of all groups in the current domain [2] Return to main menu Choice' # Define Logic for Group Search Menu switch (Read-Host $MenuGoupSearch) { 1 { # Define LDAP Filter $LDAPFilter = "(objectCategory=Group)" #Call fnADSearchExecute fnADSearchExecute } 2 { fnADSearchMenu } default {"You have chosen an invalid option"; fnPause; fnADSearchMenu} } } # Function Definition: fnComputerSearchMenu Function fnComputerSearchMenu { # Display Computer Search Menu Question " " "What type of computer information would you like?" # Display Group Search Menu $MenuComputerSearch = ' [1] Summary of all computers in the current domain [2] Return to main menu Choice' # Define Logic for Group Search Menu switch (Read-Host $MenuComputerSearch) { 1 { # Define LDAP Filter $LDAPFilter = "(objectCategory=Computer)" #Call fnADSearchExecute fnADSearchExecute } 2 { fnADSearchMenu } default {"You have chosen an invalid option"; fnPause; fnADSearchMenu} } } # Function Definition: fnADSearchExecute Function fnADSearchExecute { # Define AD Search Filter $strFilter = "$LDAPFilter" # Define AD Location for Search $objDomain = New-Object System.DirectoryServices.DirectoryEntry # Define AD Search Parameters $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = $strFilter $objSearcher.SearchScope = "Subtree" # Define AD Properties Returned by Search $colProplist = "name" foreach ($i in $colProplist){$objSearcher.PropertiesToLoad.Add($i)} # Execute AD Search $colResults = $objSearcher.FindAll() # Format AD Search Results foreach ($objResult in $colResults) { $objItem = $objResult.Properties "Name: " + $objItem.name " " } } # Call ADSearch Menu Function fnADSearchMenu
Left4Dead – Survival – No Mercy, Gas Station
Me playing Left 4 Dead Survival mode on the No Mercy – Gas Station level.



