windows - 为什么使用管道在 powershell 中不起作用?

标签 windows powershell scripting

我正在尝试执行以下行:

exit | sqlplus username/password@sid @test.sql

在 cmd 中运行良好,但在 powershell 中我得到“不允许使用空管道元素”

为什么会这样,我该如何解决?

最佳答案

好吧,exit 命令没有输出,所以没有任何东西可以传递给管道,因此您得到一个空的管道元素。因此,虽然没有任何内容可以通过管道传输到其他命令,但问题是它是否真的应该执行。

此外,cmd 中的 shell 内置命令,例如 exit、dir 等,在 Powershell 中的工作方式可能有所不同。别名只是为了帮助习惯。

解决这个问题可能很容易。因为没有什么可以传递给管道,所以您的陈述没有任何实际意义。你可能想跑

sqlplus username/password@sid @test.sql
exit

预计到达时间:正如您的评论表明的是一个完全不同的问题。您从 this answer 复制了命令行错误的。如果您想在管道中稍后向命令发送文本“exit”,则需要以某种方式输出它。这可以在 cmd 和 Powershell 中使用 echo 完成。所以你不应该在这里遗漏 echo:

echo 退出 | sqlplus 用户名/密码@sid @test.sql

或者,您可以将“exit”作为字符串直接发送到管道中:

"exit" | sqlplus username/password@sid @test.sql

关于windows - 为什么使用管道在 powershell 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059622/

相关文章:

bash - 如何在 sed 中使用 bash 脚本变量

bash - 像 `ip` 这样的工具的输出是要被解析的吗?

windows - 特定应用程序的文件权限

linux - Endianness 是一种属性、硬件还是软件?

powershell - PowerShell远程调用。拒绝访问

powershell - 是否可以使 cmdlet 与同时通过管道传输到其中的所有项目一起工作?

c++ - 在 NONCLIENTMETRICS 中,状态字体、消息字体和标题字体之间有什么区别?

java - alter Windows 文件中的 krb5.ini 文件去哪儿了?

powershell - Azure使用powershell如何获取实例计数

linux - 尝试在笔记本电脑上安装 Fedora 时如何解决 System.OutOfMemoryException 问题?