Powershell iTunes

Powershell iTunesPowershell iTunes is a Powershell script which lets you control iTunes over Powershell.

Howto:

  1. Download Powershellitunes.zip
  2. Extract the Files where ever you wanna save the powershell script
  3. Run the script
    Powershell iTunes
  4. Now you can run the Powershell Cmdlets

Powershell iTunes Commands:

  • Start-iTunes
  • Close-iTunes
  • Play-Track
  • Pause-Track
  • Resume-Track
  • Back-Track
  • Next-Track
  • Mute-Track
  • Unmute-Track
  • Show-iTunesVersion
  • Set-VolumeDown
  • Set-VolumeUp
  • Set-Volume

Changelog:

1.0.1

  • FIXED: Start-iTunes (Script doesn’t work because of new $iTunes variable. Now using $script:iTunes
  • FIXED: Format in Get-PSiTunesHelp

1.0

  • Release 1.0

The Script:

#
#*****************************************************************
#
# Powershell iTunes v1 $Rev: 754 $
# (c) 2004-2010 Thomas Maurer. All rights reserved.
# created by Thomas Maurer
#
# http://www.thomasmaurer.ch
# http://www.thomasmaurer.ch/projects 
#
# last Update by $Author: tmaurer $ on $Date: 2010-11-24 07:50:06 +0100 (Mi, 24 Nov 2010) $
#
# Version 1.0.1
#
#*****************************************************************
#

# Welcome													
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host "    ____                               __         ____            " -BackgroundColor Black -ForegroundColor White
Write-Host "   / __ \____ _      _____  __________/ /_  ___  / / /            " -BackgroundColor Black -ForegroundColor White
Write-Host "  / /_/ / __ \ | /| / / _ \/ ___/ ___/ __ \/ _ \/ / /             " -BackgroundColor Black -ForegroundColor White
Write-Host " / ____/ /_/ / |/ |/ /  __/ /  (__  ) / / /  __/ / /              " -BackgroundColor Black -ForegroundColor White
Write-Host "/_/    \____/|__/|__/\___/_/  /____/_/ /_/\___/_/_/               " -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White                    
Write-Host "    _ ______                                                      " -BackgroundColor Black -ForegroundColor White
Write-Host "   (_)_  __/_  ______  ___  _____                                 " -BackgroundColor Black -ForegroundColor White
Write-Host "  / / / / / / / / __ \/ _ \/ ___/                                 " -BackgroundColor Black -ForegroundColor White
Write-Host " / / / / / /_/ / / / /  __(__  )                                  " -BackgroundColor Black -ForegroundColor White
Write-Host "/_/ /_/  \__,_/_/ /_/\___/____/                                   " -BackgroundColor Black -ForegroundColor White                                 
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host "******************************************************************" -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host " Welcome to the Powershell iTunes                                 " -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host " (c) 2010 Thomas Maurer www.thomasmaurer.ch/projects              " -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host "******************************************************************" -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White
Write-Host " for Help use the Get-PSiTunesHelp                                " -BackgroundColor Black -ForegroundColor White
Write-Host "                                                                  " -BackgroundColor Black -ForegroundColor White

# Add ComObjects to $iTunes
$iTunes = New-Object -ComObject iTunes.Application


# Function to start itunes
function Start-iTunes { 
    process {
	
		$iTunesRunning = Get-Process | Where-Object {$_.ProcessName -eq "iTunes"}
		if(!$iTunesRunning) {
			$script:iTunes = New-Object -ComObject iTunes.Application
			Write-Host "(PS iTunes): iTunes started" -BackgroundColor Black -ForegroundColor green
		} 
		else {
			Write-Host "(PS iTunes): iTunes allready running" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to close itunes
function Close-iTunes { 
    process {
	
		$iTunesRunning = Get-Process | Where-Object {$_.ProcessName -eq "iTunes"}
		if(!$iTunesRunning) {
			Write-Host "(PS iTunes): iTunes not running" -BackgroundColor Black -ForegroundColor red
		} 
		else {
			Stop-Process $iTunesRunning.Id
			Write-Host "(PS iTunes): iTunes closed" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to play a song
function Play-Track { 
    process {
		if ($iTunes.Playerstate -eq "0"){
			$iTunes.Play()
			Write-Host "(PS iTunes): Now playing:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor green
		} 
		else {
			Write-Host "(PS iTunes): Already playing Track:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to stop a song
function Pause-Track { 
    process {
        if ($iTunes.Playerstate -eq "1"){
			$iTunes.Pause()	
			Write-Host "(PS iTunes): iTunes paused" -BackgroundColor Black -ForegroundColor Red
		}
		else {
			Write-Host "(PS iTunes): Not playing any track" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to resume a song
function Resume-Track { 
    process {
    	if ($iTunes.Playerstate -eq "0"){ 
			$iTunes.Play()
			Write-Host "(PS iTunes): Now playing:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor green
		}
		else {
			Write-Host "(PS iTunes): Already playing Track:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to go a song back
function Back-Track { 
    process { 
	$iTunes.BackTrack()
	Write-Host "(PS iTunes): Now playing:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor green	
	}
}

# Function to go to the next
function Next-Track { 
    process {   
	$iTunes.NextTrack()
	Write-Host "(PS iTunes): Now playing:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor green	
	}
}

# Function to get infos about the current track
function Get-CurrentTrack { 
    process {    
	Write-Host "(PS iTunes): Currently playing:" $iTunes.CurrentTrack.Name "from" $iTunes.CurrentTrack.Artist -BackgroundColor Black -ForegroundColor White
	}
}

# Function to mute itunes
function Mute-iTunes { 
    process {
        if($itunes.Mute -eq $false) {
			$itunes.Mute = $true
			Write-Host "(PS iTunes): iTunes muted" -BackgroundColor Black -ForegroundColor Red
		}
		else {
			Write-Host "(PS iTunes): iTunes already muted" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to unmute itunes
function Unmute-iTunes { 
    process {
    	if($itunes.Mute -eq $true) {
			$itunes.Mute = $false
			Write-Host "(PS iTunes): iTunes unmuted" -BackgroundColor Black -ForegroundColor green
		}
		else {
			Write-Host "(PS iTunes): iTunes already unmuted" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to set iTunes volume up
function Set-VolumeUP { 
    process {
		if($iTunes.SoundVolume -lt 100) {
			$iTunes.SoundVolume = $iTunes.SoundVolume + 2
			Write-Host "(PS iTunes): iTunes Volume" $iTunes.SoundVolume -BackgroundColor Black -ForegroundColor green	
		}	
		else {
			Write-Host "(PS iTunes): iTunes Volume is already 100%" -BackgroundColor Black -ForegroundColor red
		}	
	}
}

# Function to set iTunes volume down
function Set-VolumeDown { 
    process {
		if($iTunes.SoundVolume -gt 0) {
			$iTunes.SoundVolume = $iTunes.SoundVolume - 2
			Write-Host "(PS iTunes): iTunes Volume" $iTunes.SoundVolume -BackgroundColor Black -ForegroundColor red	
		}	
		else {
			Write-Host "(PS iTunes): iTunes Volume is already 0%" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to set iTunes
function Set-Volume { 
	param (
		[int]$Volume 
	)
    process {
		if($Volume -ge 0 -and $Volume -le 100) {
			$iTunes.SoundVolume = $Volume
			Write-Host "(PS iTunes): iTunes Volume" $iTunes.SoundVolume -BackgroundColor Black -ForegroundColor green	
		}	
		else {
			Write-Host "(PS iTunes): Volume has to be 0-100" -BackgroundColor Black -ForegroundColor red
		}
	}
}

# Function to show the Version of iTunes
function Show-iTunesVersion { 
    process {
	Write-Host "(PS iTunes): iTunes Version" $iTunes.version -BackgroundColor Black -ForegroundColor White	
	}
}

# Function to show the Version of iTunes
function get-PSiTunesHelp { 
    process {
	Write-Host " "
	Write-Host " Powershell iTunes Help"
	Write-Host " "	
	Write-Host "********************************************************"	
	Write-Host " "
	Write-Host " Commands"
	Write-Host " "
	Write-Host " Start-iTunes			Starts iTunes"
	Write-Host " Close-iTunes			Closes iTunes"
	Write-Host " Play-Track			Plays a iTunes Track"
	Write-Host " Pause-Track			Pauses a iTunes Track"
	Write-Host " Resume-Track			Resumes a iTunes Track"
	Write-Host " Back-Track			Go to the last iTunes Track"
	Write-Host " Next-Track			Plays next iTunes Track"
	Write-Host " Mute-Track			Mutes iTunes"
	Write-Host " Unmute-Track			Unmutes iTunes"	
	Write-Host " Show-iTunesVersion		Shows iTunes Version"
	Write-Host " Set-VolumeDown			Set Volume Down"
	Write-Host " Set-VolumeUp			Set Volume Up"
	Write-Host " Set-Volume			Set iTunes Volume (0-100)"
	}
}

have fun

8 thoughts on “Powershell iTunes

  1. Pingback: Powershell iTunes v1 | thomasmaurer.ch

  2. hello thomas,

    how is that you save the file from powershell? if i want to run an executable file…where do I save these commands? does that make sense? sorry…i never uses PC’s….

    a.

  3. by the way,

    this is all i am hoping to do. this look right?

    $ie = New-Object -ComObject “InternetExplorer.Application”

    $iTunes = New-Object -ComObject iTunes.Application

    function Set-VolumeDown {
    process {
    if($ie.visible =$true) {
    $iTunes.SoundVolume = $iTunes.SoundVolume – 2
    }
    else {
    $iTunes.SoundVolume = $iTunes.SoundVolume + 2
    }
    }
    }

  4. Hi Andrew

    You can safe the script ans file.ps1 or something.ps1…

    than open powershell, and run the script “./file.ps1″.
    If you use powershell for the first time, powershell will tell you that you can not run unsigned scripts. To run unsigned scripts you can run the command “Set-ExecutionPolicy Unrestricted” or “Set-ExecutionPolicy RemoteSigned”. If you need more information about signing you can use “get-help set-executionpolicy”.

    I think your script basicly could work. Something you have to no is that $ie.visible = $true will set $ie.visible to true. if you wanna check if $ie.visible is true (I think thats what you wanna do) you should use “$ie.visible -eq $true”

  5. Thanks for this excellent resource. Do you have plans to extend it? I download radio shows everyday into the “automatically add to itunes” folder. This works well, but they are tagged as ‘music’ or ‘podcast’ so iMatch tries to upload them, but they are too big and use all my bandwidth.

    I have to re-tag them as audiobook manually, so if I could download those files to a temp folder and run a powershell script to automatically tag them as audiobooks that would be fantastic. Do you think something like this is possible to do?
    Cheers.

  6. This doesn’t seem to work for me. The script runs, I see the splash screen, but none of the commands work. I get:
    “The term ‘start-itunes’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.”
    And a correseponding message for any of the commands. I’m running it in an elevated PS session.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>