【问题标题】:How to redirect interactive prompt messages for input to a file如何将用于输入的交互式提示消息重定向到文件
【发布时间】:2017-02-16 22:49:41
【问题描述】:

我有一个文件夹,里面有一个文件:

C:\tmp\a\file.txt

当我尝试删除此文件夹时:

rd c:\tmp\a

我收到系统输入消息:

我想将此消息重定向到一个文件。
我尝试了以下任何建议的重定向运算符:
https://ss64.com/ps/syntax-redirection.html

但它们都不适合我。
我还尝试了*> 运算符:

当我尝试基本的> 运算符时,它只会向我发送系统消息:

我尝试执行此重定向的真正原因是因为我正在处理客户端和服务器之间的反向 shell。当服务器试图从客户端删除文件夹时,问题会转到客户端而不是服务器。
因此,在通过网络尝试之前,我首先想了解如何执行此基本重定向。

【问题讨论】:

  • Get-Help about_Redirection: 注意:Windows PowerShell 3.0 中引入了 All (*)、Warning (3)、Verbose (4) 和 Debug (5) 重定向运算符。它们在早期版本的 Windows PowerShell 中不起作用。 而且您使用的是 PowerShell v2。而且,顺便说一句,输出重定向运算符不允许您重定向确认消息。

标签: powershell stdin


【解决方案1】:

您是否尝试过通过管道将 Out-File 命令传递给函数?

rd c:\tmp\a | Out-File -FilePath C:\tmp\a\file.txt

另外,我必须提到您正在尝试删除文件夹“a”,但随后又尝试将文本输出到该文件夹​​中的文件。这对我来说似乎很奇怪。但是,也许我误解了一些东西。

【讨论】:

  • 我试过你写的命令,还是收到系统消息。关于我试图将信息发送到此文件夹内的文件的逻辑问题,您可以将文件夹路径更改为其他地方,这对我来说并不重要。无论如何,系统消息应该在删除之前重定向到文件=>它不会删除,因为我不会选择“是”。
  • 好的,这更有意义。所以从我的研究来看,rd 或 Remove-Item 没有输出。我认为您唯一的选择是指定您希望函数以递归和详细的方式执行。这当然会无限期地删除文件夹和文件。
【解决方案2】:

您可以使用Start-Transcript 将控制台输出重定向到文件。

Start-Transcript -path C:\output.txt -append
# do some stuff
Stop-Transcript

这会将输出重定向到文件 C:\output.txt

【讨论】:

  • 这是一个小小的进步。它确实将输出移动到文件中,但不会重定向它。我希望它重定向 => 我不应该在控制台中看到任何消息,因为我正在重定向它们。
猜你喜欢
  • 1970-01-01
  • 2021-05-25
  • 2016-01-15
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
相关资源
最近更新 更多