Powershell iTunesIn the last days I worked with Powershell and ComObjects. It turned out that iTunes is a really good exmaple for using ComObjects with Powershell, thats why I wrote this little Script.
Powershell 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

The Script:

[powershell]
#
#*****************************************************************
#
# Powershell iTunes v1 $Rev: 754 $
# (c) 2004-2010 Thomas Maurer. All rights reserved.
# created by Thomas Maurer
#
# https://www.thomasmaurer.ch
# https://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)”
}
}
[/powershell]

I released this here: https://www.thomasmaurer.ch/projects/powershell-itunes/