new--Run .bat File From PowerShell .ps1 Script
PowerShell scripts can run any Windows command or .bat file. This page shows one of the several ways to run Windows command lines from PowerShell.
Example: Run a .bat file from a PowerShell script with cmd.exe
Run this .bat file from a PowerShell script.
See also new--Logging Jobs with Start-Transcript
.bat File for this example: C:\Demo\hello_world.bat
echo "Hello World"
rem When editing save as "ASCII", not "UTF"
PowerShell .ps1 Script: Run_BAT_file.ps1
######### Start Logging #########################################
$DateTimeStr = Get-Date -UFormat %Y-%m-%d@%H-%M # date-time string for log file name
[string]$RunLogsPath = "$($PSScriptRoot)\Run_Logs" # path for log file created below
[string]$Transcript_FileRef = "$($RunLogsPath)\RunLog_$DateTimeStr.txt"
Start-Transcript -Path $Transcript_FileRef -Append -Verbose
#### Start DOS .bat file with cmd.exe (command interpreter)
$BatFileName = "C:\Demo\hello_world.bat"
Write-Host "--------------------------------------------------------"
Write-Host "Running DOS .bat file = $BatFileName"
cmd.exe /c $BatFileName
Stop-Transcript # optional
Notes:
Line 3 - Uses the path of the .ps1 script as the path to the \Run_Logs
folder.
Line 5 - Creates a log file in C:\Demo\Run_Logs
and begins to send log records to it.
Makes the folder \Run_Logs
if the folder doesn't exist.
Line 8 - Assigns the path & file name of the .bat file to run.
Line 12 - Runs the .bat file with cmd.exe.
Alternative:
cmd.exe /c "C:\Demo\hello_world.bat"
Log File Created in C:\Demo\Run_Logs
Example: Log file created C:\Demo\Run_Logs\RunLog_2022-02-14@19-26.txt
**********************
Windows PowerShell transcript start
Start time: 20220214192617
Username: G3\msliv
RunAs User: G3\msliv
Configuration Name:
Machine: G3 (Microsoft Windows NT 10.0.19044.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
Process ID: 15112
PSVersion: 5.1.19041.1320
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.1320
BuildVersion: 10.0.19041.1320
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\Demo\Run_Logs\RunLog_2022-02-14@19-26.txt
--------------------------------------------------------
Running DOS .bat file = C:\Demo\hello_world.bat
C:\WINDOWS\system32>echo "Hello World"
"Hello World"
C:\WINDOWS\system32>rem When editing save as "ASCII", not "UTF"
**********************
Windows PowerShell transcript end
End time: 20220214192617
**********************
Links to docs.microsoft.com
https://docs.microsoft.com/en-us/answers/questions/425673/running-a-cmd-within-powershell.html
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmd Windows Command Interpreter (cmd.exe a.k.a. Command Prompt)
Related Pages
Running PowerShell Script from Scheduler
Run the .ps1 script in the example above from Windows Task Scheduler or SQL Server Agent.new--Deleting Old Files After <n> Days Clean up old log files more than <n> days old.