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 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. -
Deleting Old Files After <n> Days Clean up old log files more than <n> days old.