26 February, 2020

Add PID to Powershell Window - To quickly fix lock ups.


This should come in handy…
If you are like me, and have a few different ISE windows open at any given time…
And one of them locks-up on you

Knowing which one to kill from the task manager, is almost impossible… 
But if you know its PID…
Get-Process -Id 15868 | Stop-Process -Force

You can kill the frozen window, and when you re-open ISE, its session saving feature will restore it.

 The work is done here:
(Get-Process -ID $PID).Id

Adding the PID to the title of the PowerShell window is done in the Profile…
  • Profile.ps1
  • Microsoft.PowerShell_profile.ps1
  • Microsoft.PowerShellISE_profile.ps1
Here is an example:
function Test-IsAdmin {([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")}
if (!(Test-IsAdmin)){$Host.UI.RawUI.WindowTitle = "STANDARD Emetic Gyroscopic Discombobulator - PLEBE Edition - (PID - $((Get-Process -ID $PID).Id))"}
else {$Host.UI.RawUI.WindowTitle = "DELUXE Emetic Gyroscopic Discombobulator - God Mode (PID - $((Get-Process -ID $PID).Id))"}

That whole Test-IsAdmin is not needed – I just have my window tricked out (I’ve even changed the icon for the Admin sessions).

The only thing needed would be something like this:
Host.UI.RawUI.WindowTitle = "PowerShell ISE - (PID - $((Get-Process -ID $PID).Id))"

08 February, 2020

Powershell: MP4 to MP3, using FFMPEG


Using your favorite website, to download a YouTube vid, as an MP4 video…
Such as:
https://www.youtube.com/watch?v=NTvcNm1ksRg
https://y2mate.com/youtube/NTvcNm1ksRg

Then using ‘FFMPEG’, to grab the audio, from that MP4… As an MP3 audio file.
This script opens a file select dialog, where you can select the MP4 file…
And then proceeds make the MP3, as a new file – In the source folder.
Then opens up the location of the MP3, wit that file selected.

Notice that there is a flag that will allow the selection of multiple files – It is intentionally called, and set to ‘
Multiselect = $false, because otherwise, every MP3 file, is gonna have the same name, with subsequent files showing numeric iterations parenthetically.

Change the ‘
$fileName’ – That MP4 you downloaded has a crappy file name…
Change the path of the ‘
ffmpeg.exe’.

# Could also do this... The file name, via a $fileName = Read-Host
$fileName = "Billy Squier - Everybody Wants You" #just the name - MP3 is added in below

$fileName = $fileName+".mp3"
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
    InitialDirectory = "C:\Users\Rich\Downloads"
    Multiselect = $false # Multiple files can be chosen
    Filter = 'Video (*.MP4)|*.mp4' # Specified file types
    Title = "Select file..."
    }
[void]$FileBrowser.ShowDialog()
$file = $FileBrowser.FileName
If($FileBrowser.FileNames -like "*\*") {
$Path_to_File = $FileBrowser.FileName
$Path_to_File
}
else {
    Write-Host "Cancelled by user"
    break
}

$OutputFolder = "C:\Users\Rich\Music\"
$Output = $OutputFolder+$fileName
& "C:\Users\Rich\Extracted Applications\ffmpeg\ffmpegWin64\bin\ffmpeg.exe" -i $Path_to_File $Output
# Open the folder the MP3 was saved to,,,
explorer.exe /select,$Output