So, I used  this some forever ago to move song ratings from iTunes to Windows Media Player with a powershell function.  Now I wanted to export the ratings to a file so I have that list outside of wmp.  Annoyingly, i didn't see a way to export the song list, saving the playlist just saved the search terms.  Meh, powershell to the rescue, yet again...
This function will export the name of all files w/ ‘-starcount’ stars. Could be trivially modified to export other details.
This function will export the name of all files w/ ‘-starcount’ stars. Could be trivially modified to export other details.
function get-playlistbyStars {
      param ($starcount = $(throw "need -starcount")
           )
      #get WMP
      $wmp = New-object -COM WMPlayer.OCX
      $WMPLibrary= $wmp.mediaCollection
      #set vars
      $rated = 0
      $processed = 0
      $added = 0
      $unrated = 0 
      $1star = 0 
      $2star = 0 
      $3star = 0 
      $4star = 0 
      $5star = 0 
      $defstar = 0
      $ctr = 0
      $allsongs = $WMPLibrary.getall()
      $colOut = @()
      for ($i = 0; $i -lt $allsongs.count; $i++) {
            $processed++
            $song = $allsongs.Item($i)
            if (@(".jpg",".png") -notcontains ([System.IO.FileInfo]$song.sourceURL).Extension  ) {
                  switch ($song.getiteminfo("UserRating"))  {
                        "0" {
                              $unrated++ 
                              if ($starcount -eq 0) {
                                    $colOut += $song.sourceURL
                              }
                        }     
                        "1" {
                              $1star++ 
                              $rated++
                              if ($starcount -eq 1) {
                                    $colOut += $song.sourceURL
                              }
                        }
                        "25" {
                              $2star++ 
                              $rated++
                              if ($starcount -eq 2) {
                                    $colOut += $song.sourceURL
                              }
                        }
                        "50" {
                              $3star++ 
                              $rated++
                              if ($starcount -eq 3) {
                                    $colOut += $song.sourceURL
                              }
                        }
                        "75" {
                              $4star++ 
                              $rated++
                              if ($starcount -eq 4) {
                                    $colOut += $song.sourceURL
                              }
                        }
                        "99" {
                              $5star++ 
                              $rated++
                              if ($starcount -eq 5) {
                                    $colOut += $song.sourceURL
                              }
                        }
                        default {
                              #so I have something to query for random nums
                              $defstar++
                              if ($starcount -eq 42) {
                                    $colOut += $song.sourceURL
                              }
                        }
                  }
                  #so I have something to watch
                  $ctr++
                  if ($ctr%500 -eq 0) { Write-verbose $ctr}
            }
      }
      #output results
      Write-verbose "Processed:  $processed"
      Write-verbose "Rated:  $rated"
      Write-verbose "Added:  $added"
      Write-verbose "1:  $1star "
      Write-verbose "2:  $2star "
      Write-verbose "3:  $3star"
      Write-verbose "4:  $4star "
      Write-verbose "5:  $5star"
      Write-verbose "def:  $defstar"
      $colOut
}
get-playlistbyStars 3 | out-file –filepath .\3starsongs.txt
 
