This is a test using local images from the iPad camera roll and uploading to a wordpress site for @mikecane.
Test of @blogsyapp for @mikecane
VHD Parent Locator Fixup Failed – DPM 2010 ID 3130
Error:
DPM failed to fixup VHD parent locator post backup for Microsoft Hyper-V \Backup Using Child Partition Snapshot\SERVER(SERVER) on DPMSERVER. Your recovery point is valid, but you will be unable to perform item-level recoveries using this recovery point. (ID 3130)
So I’ve seen this happen a couple times now on my DPM 2010 installation. I wasn’t too overly worried about it because it was an occasional alert and usually the next set of recovery points would be fine. However, after a couple VMs started having the same recovery point error on a near nightly basis it was time to start figuring out what was going on.
I found this thread which contained a link to this KB article and that was the solution for the original poster. Unfortunately that KB didn’t really apply to me because all the hosts/vms in question are 2008 R2. But, what it did do is point me to the root of the problem itself. What I had done a while back was setup checkpoints on the systems in question and then a short while later (when I was done testing a couple things) I deleted all the previous checkpoints for those systems and kept only the current running point in time. The problem was I never took the downtime to merge the differencing disks and naturally I later forgot that I needed to. So, what would end up happening is I would have say 5 minutes of one of these VMs being off as I made configuration changes and Hyper-V would begin the merge process. However SCVMM didn’t show anything like that happening, so when I was done my config changes, I would boot the VM and Hyper-V would cancel the merge process.
So, in short the solution to this error is quite simply shut down your VM, open the Hyper-V console (not SCVMM) and wait while the merge process completes. Depending on the size of the differencing disks it may take a (long) while.
And for reference – the easiest way to determine if you have a disk merge that needs to be completed is to browse to your VM storage and check to see if there are AVHD files in there. You can also open the VM’s XML configuration and look for this line:
disk_merge_pending type=”bool” True
Forcing an Update of the Exchange 2007 GAL
Some things should be simple. Like just right clicking the GAL in the EMC and selecting update. Then updating Outlook. But Nooooooo… do you think that actually works when you need it to?! Of course not.
So, fire up the Exchange Management Shell –
PS> Get-OfflineAddressBook | Update-OfflineAddressBook
PS> Update-FileDistributionService -Identity YourCASServer
Head on over to Outlook and download the address book and your changes should be there.
Exchange 2007 Quick Tip: Find disabled AD users with active mailboxes and stop their email
Doing a little cleanup today and needed to check who was “disabled” in AD but still had mailboxes on our Exchange server. In case you weren’t aware, Exchange mailboxes remain active even if the user is disabled. As part of how we do things, we keep mailboxes around for a looooong time because people tend to leave/retire then come back on a temp basis. So when they return, they have all their old emails available. So, first let’s compare AD w/ Exchange and get a list of folks… (source for the code below)
Download Quest powershell.
Run the PS query below
> get-qaduser -includedproperties altrecipient, homeMDB -disabled | select-object -property “name”, “description” , “altrecipient”, “homeMDB” > c:\mailboxes.csv
Then sort by HomeMDB.
Now you have a list of folks to work with. The next step if you want to stop email flowing to that mailbox is to do one of a couple things ( there’s some other options too) -you can either restrict who can send email to that address (say a dummy account in your organization only) which will prevent anyone else sending to that mailbox or you can change the primary SMTP address to something else and the original address will cause a non-deliverable.
What’s the difference? Not much. If you restrict who can email you will get the following NDR:
Your message wasn’t delivered because of security policies. Microsoft Exchange will not try to redeliver this message for you. Please provide the following diagnostic text to your system administrator. #550 5.7.1 RESOLVER.RST.NotAuthorized; not authorized ##
If you change the primary address to something else you will get this:
The recipient’s e-mail address was not found in the recipient’s e-mail system. Microsoft Exchange will not try to redeliver this message for you. Please check the e-mail address and try resending this message, or provide the following diagnostic text to your system administrator. #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##
I personally prefer the address not found. That to me is a little more definitive and doesn’t say oops you can’t do that, please call me and ask for permission to do it. It says oops, that address is wrong, check it and make sure you’re sending to someone who is still here. My standard format for changing addresses is to leave the username and add in _DISABLED. So the new address looks like: username_DISABLED@domain.com.
Then if you want to easily find everyone who has a disabled email… the search is like this:
> Get-Recipient -ResultSize Unlimited -Filter “EmailAddresses -like ‘*_DISABLED@domain.local’ -And RecipientType -eq ‘UserMailbox’”
Exchange 2007 Quick Tip: Getting Members of a Dynamic Distribution Group
If you need to get a listing of all the people (and email addresses) who will receive an email from a dynamic distribution group and then export that to CSV:
$members = Get-DynamicDistributionGroup -resultsize unlimited -Identity “Distribution Group Name”
Get-Recipient -resultsize unlimited -RecipientPreviewFilter $members.RecipientFilter | select Displayname,PrimarySmtpAddress | Export-Csv C:\temp\NameOfCSV.Csv
(Source)
RIP Steve Jobs.
Exchange 2007 Quick Tip: Searching Email Addresses
A Couple quick tips since I had to do a similar search this morning. First let’s say you need to search all your recipients for an email address. Normally not a big deal since you should know their name and can check the mailbox. But what if its an email address that isn’t obvious and is on a different domain?
get-recipient -ResultSize Unlimited | where {$_.emailaddresses -match “domain.foo”} | select name,emailaddresses | fl —- (source)
That will get all recipients then filter based on the domain listed. You can also of course just change the file to the full email address and that will work as well.
Unfortunately my search didn’t return what I was looking for so I wanted to check and see if maybe it was someone who was using a forwarding address. Here’s that search as well:
Get-Mailbox | Where {$_.ForwardingAddress -ne $null} |Select Name, ForwardingAddress, DeliverToMailboxAndForward | fl —- (source)
Exchange 2007 Add To Distribution Group From Text File
Another interesting request came my way. Since I work in a school district we have a decent amount of “turnover” or whatever you may want to call it every year and at random times throughout the year. This isn’t necessarily folks leaving the district but maybe moving from one grade level to another or taking leave and having a long term substitute take their place. So the request was to have these distribution groups which are populated with a listing of teachers per grade level, generated from our student information system. Naturally the information system doesn’t provide a way to update Exchange and is not at all AD integrated. So what I did was request an export of teachers by grade level (one text file per grade level) and their (thankfully aligned with AD) username. I then placed those text files in a folder, created the distribution groups and ran the below script.
First use powershell to create a distribution group: read more »
Using MRTG to monitor Dell EqualLogic
Alright – if you’re here you likely already know what the Dell EqualLogic is and what MRTG is typically used for. You likely also know that there’s a (free) download from Dell called EqualLogic SAN Headquarters that can give you a ton of good information about your SAN. It has everything from volume capacity, replica capacity, firmware versions and even I/O information for the group(s) you have. Unfortunately, there’s a level of granularity that’s missing from SAN HQ. If you want to know which volume or volumes are getting hammered on a daily basis, which ones have higher read or write I/Os – you’re basically out of luck. The same goes for using the standard Group Manager application.
Here’s an example of what I mean:
read more »
HMH Access 21st Century, DEP and You!
Alright, if you haven’t had the pleasure of meeting Access 21st Century yet – and most of you never will – then here’s a quick rundown.
First here’s the FAQ / Tech Notes page – you’re going to need it.
Houghton Mifflin Harcourt is the developer/publisher. Long story short with this application, is it provides a learning environment (computer based) for at risk kids. And that’s about the extent of my knowledge for what the product actually does. Sorry – I’m a systems administrator, not a teacher so going hands on in depth with the learning environment just isn’t part of the role.
Anyway, there’s a couple important things to know that may very well trip you up if you end up installing this platform for your district.
First: DO NOT, I repeat DO NOT trust the built in database backup utility in the application. I’m not sure what the story is with it – but 90% of the time it fails to provide a backup at all. When it does – you can bet that you’re going to try 9 or 10 times to get it to restore. So, by all means use the utility but have a backup plan! My personal method (after a nightmare of problems with the application today) is to stop the Access 21st Century service and take a copy of the data directory in program files. Yes, its a manual process, but I see no other option. I’ll continue backing up the VM, but these other two methods of app DB backup and data directory backup might be the only way to get the data restored. Speaking of – when you can’t restore the database properly – try this:





