Write Warning - PowerShell


The Write-Warning command in PowerShell generates and outputs a warning message to the console or a specified output stream. It serves as a tool for communicating issues or concerns during script execution or system operations.


Write-Warning [-Message] <String> [-OutputStream] <Object>


  • -Message: Specifies the warning message to be displayed. A string is required as input.
  • -OutputStream: Directs the output of the warning message to a specified output stream. The default value is the console window, but can be set to objects like files, streams, or event logs.


Simple Usage:

Write-Warning "There is a problem with the file."

Writing to a File:

Write-Warning "Error writing to file" -OutputStream "C:\Logs\Errors.log"

Complex Usage with Conditional Warnings:

$age = 15
if ($age -lt 18) {
    Write-Warning "This user is not old enough to access the content."

Common Issues

  • Ignoring Warnings: Users may inadvertently ignore warnings, resulting in unexpected behavior. Consider using Write-Error for critical issues that require immediate attention.
  • Verbose Output: Excessive use of warnings can clutter the console output. Use warnings sparingly and only for essential information.


  • Tee-Object: Capture the warning message and send it to multiple output streams simultaneously.
    Write-Warning "Low disk space" | Tee-Object -Variable warningMessage
  • Log-File: Log warnings to a file for future reference.
    Write-Warning "Error accessing database" -OutputStream "C:\Logs\DatabaseErrors.log"
  • Write-Error: Output a more severe error message.
  • Write-Verbose: Generate verbose output for debugging purposes.
  • Get-Warning: Retrieve the last generated warning message.