Tuesday, June 12, 2012

UltraViolet Follow Up

My Amazon.com order arrived today. Another DVD/Blu-Ray combo pack with UltraViolet digital copy. Since my last experience with UltraViolet was less than stellar, I took some notes on my second experience to see if things had improved. This time around my UltraViolet and Flixter accounts have been setup, and those accounts are configured on my iPad, iPhone, and on my Mac. All that mess of setting up accounts, linking accounts, and logging in has been taken care of. UltraViolet streaming should be no problem now, right? (TL;DR version: Nope, still a horrible experience.)

Redemption code from the DVD box in hand, I log into Fkixter and click the "Redeem Now" button at the top of Flixter's page. Instead of being presented with a form to enter my redemption code, I'm presented with a list of movies available on UltraViolet. No option to search and filter, no genre grouping. The only option is to scroll through the list and find your movie. This should be easy right? With no option to sort and filter, it would make sense to sort movies alphabetically. 

Here is the exact order of the movies listed:
  1. Horrible Bosses
  2. Green Lantern
  3. Crazy, Stupid, Love
  4. Harry Potter and the Deathly Hallows - Part 1
  5. Harry Potter and the Deathly Hallows - Part 2
  6. The Hangover Part II
  7. The Smurfs
  8. Cowboys & Aliens
  9. Friends With Benefits
  10. Dolphin Tale
  11. One Tree Hill: The Complete Eighth Season
  12. Underworld Trilogy
  13. Colombiana (Unrated)
  14. Final Destination 5
  15. Shameless Season One
  16. Contagion
  17. Don't Be Afraid of the Dark
  18. The Scorpion King 3: Battle for Redemption
  19. Killer Elite
  20. Moneyball
  21. The Ides of March
  22. Courageous
  23. The Thing
  24. Dream House
  25. Drive
  26. A Very Harold & Kumar Christmas
  27. The Loras
  28. J. Edgar
  29. Honey 2
  30. Tower Heist
  31. Johnny Englis Reborn
  32. Justice League Doom
  33. The Town
  34. Monty Python And The Holy Grail
  35. Jack and Jill
  36. Happy Feet Two
  37. Scooby-Doo! Music of the VAmpire
  38. The Girl with the Dragon Tattoo
  39. Tinker, Taylor, Soldier, Spy
  40. Hop
  41. Extremely Loud & Incredibly Close
  42. One Tree Hill: The Complete Ninth Season
  43. IMAX: BornTo Be Wild
  44. Contraband
  45. New Years Eve
  46. Joyful Noise
  47. Men In Black
  48. Suits, Season 1
  49. Men In Black II
  50. The Dark Knight
  51. Batman Begins
  52. Cold War: The Complete Series
  53. Chuck Season 5
  54. Underworld: The Legacy Collection
  55. The Vow
  56. Spider-Man
  57. Spider-Man 2
  58. Spider-Man 3
  59. The Grey
  60. The Woman in Black
  61. Rizzoli & Isles Season 2
  62. True Blood Season 1
  63. True Blood Season 2
  64. True Blood Season 3
  65. True Blood Season 4 
  66. Journey 2: The Mysterious Island
  67. Save House
  68. Pretty Little Liars Season 2
  69. Falling Skies Season 1
  70. Superman Vs. the Elite
  71. Too Big to Fail
  72. Sherlock Holmes: A Game of Shadows
OK, so we have TV and Movies mixed together. As best I can tell, they are sorted by the date they were made availabe on UltraViolet's distribution system with the newest releases at the end of the list. Don't you typically put your newest products on the top of the list, at the front of the store, or on a marble pedestal so that everyone can easily see (and buy) what's new? So far UltraViolet Digital Distribution continues to defy logic.

And another comparison, redeeming a code in iTunes is simple. You click the "Redeem" link on the front page of the iTunes store, enter your code, and iTunes brings you to the product that code is for. It doesn't matter if the code is for an iTunes gift card, a digital copy of a movie, an iTunes pre-order card purchased in a store, whatever. Click redeem, enter code, get product. Why can't UltraViolet do the same? I have a code that uniquely identifies my purchase. Presumably they know what movie the code is for, but first I have to find my movie and click on it in order to redeem my code. 

OK, so I've clicked the redeem button, I've found and clicked on my movie. And now I'm presented with a larger picture of my movie. The exact same picture on the Blu-Ray box, and a description of UltraViolet:UltraViolet makes it possible for you to watch the digital movies you own anytime, anywhere, any way you want. Thanks guys, I needed to know that. Why else would I be here in the first place? The printed instructions told me to go here! Next up, instructions for the redemption process:

What You'll Need
Redemption code found inside your Blu-ray or DVD package. Offer valid only in US.

News flash: I have the box, I have my code, you should have given me a field to enter my redeem code immediately after clicking the redeem button on the main page Flixter.

So, one more click on the Get Started Button (three so far) and yes, here it is, the Redeem Code field and button! Enter code, and please wait. And please wait. And Please wait. OK now I'm redirected to Flixter...and...wow this is a slow Web site...yes I had enough time to type "wow this is a slow Web site" into the notes I'm keeping as I'm going through the redemption process. It truly is a slow site. Patience prevails, and my movie has been added to my collection.

UltraViolet may be the first out of the gate, but Apple and Disney are working on Keychest, or some competitior to UltraViolet. They aren't even on the market with their system, but with Apple involved it would be a safe bet that the Apple/Disney venture will blow UltraViolet out of the water experience wise when they do come to market.

The audio issues (distortion, peaking, whatever an audio engineer would call it) I mentioned in my previous write up are still there in the UltraViolet digital edition (download and streaming.) Again the audio issues persist across multiple devices, headphones, and speakers. Something is very wrong with the encoding process.

Monday, June 11, 2012

Active Directory Password Expiration Email Notification

This is a PowerShell script that will send an email notification to Active Directory users when their password will expire in 14, 7, 3, 1, and Zero days. Administrators/helpdesk also get a daily report of passwords that are expired and the users who got an email reminder, a great heads up for your helpdesk.

The script generates a different message when there are zero days remaining (password is expired and must be changed today) and won't continue to notify users when there are less than zero days remaining. Negitive dedlines are used for some account options such as the passwords must be changed at next logon account flag, and you don't want to fill up a user's mailbox when they can't access their mail before changing their password anyway.

To setup the script, search for the "# CONFIG:" strings and edit the following line as documented, then set it up on a server as a daily scheduled task.

Active Directory Password Expiration Email Notification Script
Import-Module ActiveDirectory

$maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
$summarybody="Name `t ExpireDate `t DaysToExpire `n"

(Get-ADUser -filter {(mail -like "*@domain.com") -and (Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet |
foreach-object {

    $lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
    $expires=$lastset.AddDays($maxdays).ToShortDateString()
    $daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
    $samname=$_.samaccountname
    $firstname=$_.GivenName
    if (($daystoexpire -eq 14) -or ($daystoexpire -eq 7) -or ($daystoexpire -eq 3) -or ($daystoexpire -eq 1) -or ($daystoexpire -eq 0)) {
    #if ($daystoexpire -le 14) {
        $ThereAreExpiring=$true
        
         # CONFIG: Enter from email address.
        $emailFrom = "helpdesk@domain.com"
        # CONFIG: Replace domain domain.com with your email domain. Do not change $samname.
        $emailTo = "$samname@domain.com"
        if ($daystoexpire -eq 0) {
        # CONFIG: Enter text for subject and body of email notification for zero days remaining.
            $subject = "$firstname, your password has expried!"
            $body = "$firstname,
Your password has expired and you must change it immediately. No further email notifications will be sent.

Contact support at extension XXXX for assistance."
        }
        Else {
        # CONFIG: Enter text for subject and body of email notification for 14, 7, 3, and 1 days remaining. 
            $subject = "$firstname, your password expires in $daystoexpire day(s)!"
            $body = "$firstname,
Your password expires in $daystoexpire day(s).

If you are using a Windows computer, press Ctrl + Alt + Del the click Change password.

If you are using a Mac computer follow the instructions at http://sharepoint/Documentation to change your password.
"
        }
        # CONFIG: Enter your smtp server here.
        $smtpServer = "email.domain.com"
        $smtp = new-object Net.Mail.SmtpClient($smtpServer)
        $smtp.Send($emailFrom, $emailTo, $subject, $body)   
       
        $summarybody += "$samname `t $expires `t $daystoexpire `n"
    }
    elseif ($daystoexpire -lt 0) {
        $ThereAreExpiring=$true
        # Add a note to the report email, but don't notify user.
        $summarybody += "$samname `t $expires `t $daystoexpire `n"
    }
}
if ($ThereAreExpiring) {
    # CONFIG: From address for report to Helpdesk/IT Admin staff.
    $emailFrom = "helpdesk@domain.com"
    # CONFIG: Address to send report email to (for Helpdesk/IT Admin staff.
    $emailTo = "helpdesk@domain.com"
    # CONFIG: Subject for report email.
    $subject = "Expiring passwords"
    $body = $summarybody
    # CONFIG: SMTP Server.
    $smtpServer = "email.domain.com"
    $smtp = new-object Net.Mail.SmtpClient($smtpServer)
    $smtp.Send($emailFrom, $emailTo, $subject, $body)
}