Why is input redirection not implemented in PowerShell?
To do something like this:
mysql -u root < create.sql
I had to switch to "cmd.exe".
Is there an alternative way of doing this in PowerShell?
Please note that the output redirection ">" is implemented in PowerShell. Please consider this before giving an answer.
The wc -l command returns the number of rows in a file followed by the name of the file. By default, the command takes the name of the file from the standard input. Using the ' < ' symbol, we redirect the standard input to file.
Input Redirection Just as the output of a command can be redirected to a file, so can the input of a command be redirected from a file. As the greater-than character > is used for output redirection, the less-than character < is used to redirect the input of a command.
There are two PowerShell operators you can use to redirect output: > and >> . The > operator is equivalent to Out-File while >> is equivalent to Out-File -Append . The redirection operators have other uses like redirecting error or verbose output streams.
Although I'm not entirely sure that this question belongs on Stack Overflow, have you looked at the PS Cmdlet for Get-Content? Look how it's used in the examples on TechNet in Using the Get-Content Cmdlet.
Example:
Get-Content c:\scripts\test.txt | Foreach-Object {Get-Wmiobject -computername $_ win32_bios}
Update: Above link to TechNet is broken, but mentioned in comment by Chad Miller Scripting Guy's post Working Around Legacy Redirection Issues with PowerShell gives three options: -use CMD /c
, Echo
, and Get-Content.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With