Thursday, June 15, 2017

convert-ToMp3.ps1 Powershell script for ffmpeg or vlc player

6/15/2017: Sometimes, you just need to convert that video into an mp3 file. You, know, something to take along in the car. Something to spin at your next 'rave' (ho-hum). :P

So what I have here, is a Powershell 'wrapper' for ffmpeg or VLC Player's native ability to convert video's to Mp3. Sure, you could use ffmpeg's command line, (or VLC's Media > Convert\Save menu). But sometimes you want to convert a whole batch, or directory, or recursive directory tree! And that is exactly where this .ps1 comes in.

All you need to do is download and install one or both of the above. I've found that ffmpeg works more consistently and bug-free than VLC. But take your pick. And then get-content c:\path-to-videos\. and pipeline them into the script, and you're off to the mp3 races. Docs and examples are in the script comments.

Wednesday, June 14, 2017

get-ImdbSearch.ps1 Imdb search script

6/14/2017: Two Posts in a day! And both're scripts to-boot!

Source Updates (reflected at Github):
  • # 2:35 PM 3/24/2018 country: failing, they've dropped space after colon, make it optional; Language same issue; duration.innertext coming through blank, pretest and use duration.datetime instead,
  • # 9:20 PM 9/12/2017 typo fix; shifted a bunch of items to 2-stage: they were passing and handing back blank values, when matches failed. 

I like movies. A lot. Last time we moved, I donated piles of dvd's! 

Wonderful thing, moving. Clears the head!  Gives you massive perspective.
Makes you want to donate 300-400 books, and hundreds of dvd's, JUST BECAUSE YOU NEVER WANT TO MOVE THEM AGAIN! :D Ever!. Really. :^S

Anyway, on to today's script: This one runs an interactive Imdb title search (using Google - smaht!) for near-miss title-matching, then returns a console menu of the Google hits, from which to pick. Pick a movie from the menu, and it pulls some fairly decent amounts of info on the chosen flick from Imdb.

Shut 'em all down: close-WinsAll.ps1 Powershell script

6/14/2017: One of the distinct 'costs' of running Office 365/Office 2016 at the office, seems to be that I spend a lot more time:
  1. Shutting down my work box for patching (now that both centralized patch management AND Office 365, independently do their own self-scheduled patching passes),
  2. and, much more frequently and defensively rebooting my box to try to scrape a few more ounces of performance from Word/Excel2016's bloated mass and resource sucking appetite.  
Both of which motivations naturally mean I'm trying to get faster reboots through on my box -- and this is coming from a guy that for the last 4-5 years has consistently hibernated his laptop at each day's end, to try to hit the ground running the next day, from the point I left off. :^|

Anyway, needless to say, the prospects and days of running a given 'up' session of Win7 for, "a couple of weeks" a stretch, appear to be long, long gone. Well, until they hand me a 36gb laptop (and some down time from work burn, to reinstall everything back to spec). But I digress....

So what's the point of this post? Simple: I've got a small and handy script I use, to get my box knocked down and into a reboot POST-HASTE!.

Tuesday, November 29, 2016

Visual Studio Code: Autohotkey-based popup Cheatsheet for Keyboard Shortcuts

11/29/2016: I like Visual Studio Code a lot - it's got some warts, and gaps, but there's some thing's it does amazingly well (and some it sort of stumbles at). If you write in Powershell, it's probably the best/lightest/most-stable editor I've found, with the range of features you get, and rampant-growth and availability in user-created extensions -  (Though it really needs better-rounded debugging... *grumble* ;P) .

Anyway, one of my pet peeves for 'Code.exe' is it's lack of good quick popup references for common tasks - well that and some of it's interface & control choices that don't match most of the common keystrokes and mouse behaviors I've gotten used to in other editors.

Autohotkey fills the gap!

Toward that end, the below is an Autohotkey-based quick-n-dirty Popup Cheatsheet for Visual Studio Code. If you use  AHK & 'Code', you might find this gapfills a niche.

What's your revision, Exchange?

11/29/2016: More quick-shared code: This is a tweaked variant of Bhargav Shukla's script that polls all Exchange 2007/2010/2013 boxes in the org, and reports on current Exch patch revision.
Changes I made were pretty minimal: adding pshelp, reformatting layout a tad, adding progress echo's, and renaming the output to a timestamped csv file, named for the script itself (easier to track changes over time, than the default 'results.csv' in your script directory). 

Autohotkey hotkeys for Ecco Pro

11/29/2016: I've committed to actively trying to post more of what I write for code snippets, time-permitting. :D
Today, frustration at a lack of the functional hotkeys I wanted in the old EccoPro outliner, led me to throw together some quick functions in Autohotkey.

This is very sketchy very quick & dirty, simple menu-automation. Gets the job done. I guess at most it'd save someone five mins or so tossing the necessary AHK Send commands together from scratch. :D

Thursday, October 10, 2013

Powershell Script - Remote Drivespace (Mountpoints) Emailed Report

10/09/2013: Today's post will outline a remote drivespace reporting script that I routinely use to monitor and report on the available Transaction Log space on my Exchange servers. The script leverages WMI to remotely query for the current freespace & volume size metrics (on either specified drive letters, or all Volume Mount Points on the target system), calculates the space in terms of gigabytes and percentage-free, outputs a report file, and emails the results to an admin mailbox.

I'd generally design this type of script to leverage Exchange Management Shell and dynamically query all servers in the appropriate site in the mailbox role (to automatically accommodate server adds and removals over time). But in this case I wanted this script to be 'blind' to Exchange version differences and also avoid a dependency on Exchange Management Shell. A specific goal in this case was to provide a tool to enable junior admins to evaluate the drive status after backup failure alerts, without the need to run the queries from a machine with a specific version of the Exchange Management Tools installed. So I instead use semicolon-delmited string variables to statically store arrays of server names for processing within the script itself.

Wednesday, October 9, 2013

Powershell Script - Hub Queue Live Monitoring Script (Exch2007/Exch2010)

10/09/2013: Here's a script I've used in various forms since around 2007: A basic rolling Exchange Hubtransport Queue Depth monitor.

I've found over time, that regardless of SCOM or other active monitoring in place for your Exchange infrastructure, you can often see problems show up early and first in queuing behavior on your HubTransport servers:
  • Experiencing mail server storage latency issues? You'll probably see increasing patterns of queuing in the MapiDelivery queues to the problem stores, as you move into peak business primetime hours and increasing mail load delivers into the hubs, but can't be delivered into the mailbox server transaction logs and stores, fast enough to keep pace with the mail flow.
  • Experiencing cpu-saturation, or other capacity issues on your hubs, or Hub-CAS hybrid systems? You'll probably see the footprint on the CPU-dependant AV-scanning processes (you ARE running antivirus scanning on your hubs, correct? :D), which will lead to mail queuing in the Submissions queues.
    --in my case, I most recently saw this as a product of CAS Exchange Web Services load -- from Lync -- soaking up more CPU than the systems had been provisioned for, in 2007, well before the Lync infrastructure had been tacked onto the Exchange infrastructure -- looong story behind that one, that predated my arrival at the firm. :P))

So in a nutshell, I've found it a pretty good backup-monitoring option, to run a self-refreshing console display on the current queue status of all hubs in a given Exchange revision.

Wednesday, October 2, 2013

Powershell Script - Using EMS Get-MessageTrackingLog + LogParser to Retrieve Top-Traffic Metrics for the Hubs in a Site

10/02/2013:All mail admins will occasionally see "odd" Exchange HubTransport queuing behavior for "unknown" reasons (I'll generally notice these type of events in response to monitoring alerts or via a looping get-queue monitoring script I run 24/7).

In most cases these little 'surges' come and go in a matter of minutes with no material impact or footprint. But on other occasions, you see something about the queuing that warrants further investigation into exactly what occurred:
  • Possibly your interest is piqued due to the amount of mail that queued up (say a sudden spike into hundreds if not thousands of messages in normal delivery queues)
  • Or possibly you want to check further due to mail rapidly piling up in queues where you traditionally should see little to no traffic (e.g. in the Unreachable queue).

Powershell Snippet - Copy/Distribute a File to Every Exchange Server, With Preference Order as to Which Target Drive

10/02/2013: Here's another handy Powershell script snippet: This time, a chunk of code I use for quickly distributing a new or updated file to all or a subset of Exchange servers using Powershell+Exchange Management Shell

Pretty simple process going on below:
  1. I store a list of drive letters to be tested into an array (in preference order)
  2. Then utilize the EMS get-exchangeserver cmdlet to collect a filtered set of all exchange servers (in this case, using
    get-exchangeserver | where{$_.isHubTransportServer -eq $true} to return only HubTransports anywhere in the Org)
  3. I then loop the exchange servers list against the drives array, testing for a functional path (which indicates a suitable target drive), and using the {break} command to drop out of the loop at the first matching drive in the list. 
  4. Whereuopon the designated file is copied to the matching UNC path

Copy/Distribute file to every exchange server, with preference order  as to which target drive: (1-line below; the command skips tests and copies to the first match)

Friday, September 20, 2013

Powershell Script - More Logparsing Multiple Servers

9/20/2013: I've been putting in a fair amount of time recently repetitively Logparsing the IIS logs on several regions of CAS servers

-- I'm attempting to guage MS Lync 'Exchange Web Services' load and demand on our production CAS's, ahead of new Lync capacity rollouts overseas --

So here's another quicky code chunk that I routinely grab and put to use for Logparsing multiple CAS servers of IIS logs.