“是什么?”<&引用;你是说当你运行powershell的时候?

“是什么?”<&引用;你是说当你运行powershell的时候?,powershell,teamcity,Powershell,Teamcity,建议使用以下方法运行脚本: powershell.exe -NonInteractive -Command " & some.ps1 " 但是,例如TeamCity PowerShell runner使用: powershell.exe -NonInteractive -Command - < some.ps1 powershell.exe-非交互式-命令-和

建议使用以下方法运行脚本:

powershell.exe -NonInteractive -Command " & some.ps1 "
但是,例如TeamCity PowerShell runner使用:

powershell.exe -NonInteractive -Command - < some.ps1
powershell.exe-非交互式-命令-

我不知道是什么“-我想说执行脚本的推荐方法是使用-File参数:

powershell.exe -NonInteractive -Command -File some.ps1

关于您的问题,“在bash脚本中使用诸如>和<之类的I/O运算符意味着您将输出写入外部文件,即:

echo hello > hello.txt
psql -U test test < script.sql
或者从外部文件获取输入,即:

echo hello > hello.txt
psql -U test test < script.sql
psql-U测试

同样的逻辑应用于windows powershell,您可以获得更多信息,因为正在通过windows shell调用
powershell.exe
,这与在正常命令提示符下(
cmd.exe
)的情况相同。在这种情况下

  • 如果命令的值为“-”,则从中读取命令文本 标准输入

  • <只是stdout->stdin重定向操作符


  • 哇,这是绕过执行策略的方法。我可以用受限策略以这种方式执行脚本。我想知道,PowerShell团队是否意识到这一点?默认情况下限制执行策略的价值是什么?我认为这不是一个真正的安全问题。您必须具有对计算机的本地访问权限(物理、远程桌面等)以通过管道传输到
    stdin
    ,这意味着您可以
    设置执行策略
    以解除限制,并基本上随心所欲。(换句话说,您首先必须具备在机器上执行操作的能力。这不会打开门,因为门已经打开了。)我不是说来自外部的攻击。场景:一个用户已经在机器上。他/她的系统管理员出于某些原因拒绝为他/她执行PS脚本。正如我们所看到的,用户仍然可以绕过此操作。@Roman Kuzmin-执行策略不是作为安全功能,而是为了防止意外运行您需要的脚本不打算。管理员对启动脚本/命令的帐户应用的任何安全限制都将适用。为清楚起见,OP的