In general I recommend against relying on the current directory in scripts, but this is especially important when mixing PowerShell and non-PowerShell because the current directory can get out of sync.
In your cmd file, if you are expecting the msi to be in the same folder as the cmd, I would change the first line to this:
msiexec /i "%~dp0ABCInstaller.msi" ^
For more information on what %~dp0 means if you aren't familiar with it, type "help call" from a Command Prompt, but the short answer is it resolves to the drive and path of the running script. You can do similarly with the line that specifies
the log file.
If you need script-relative paths in PowerShell, I recommend defining this variable early in the ps1:
$PSScriptRoot = $MyInvocation.MyCommand.Path | Split-Path -Resolve
I choose the name PSScriptRoot because that is the same variable that PowerShell provides automatically if you are writing a PS Module.