PowerShell可以调用命令行批处理文件。PowerShell脚本输出可以使用"tee“命令进行记录。但是tee命令没有在PowerShell脚本中为我记录PowerShell 1中批处理文件的输出。
试试下面这个削减的例子:
创建一个包含内容的批处理文件,名为test.bat
@echo hello from bat
从PowerShell运行它:
PS C:\> .\test.bat | tee out.txt
这是可行的-您将有一个输出文件,其中包含
hello from bat
现在,创建一个名为PowerShell test.ps1的脚本,该脚本封装批处理文件,其中
我有一个powershell脚本文件和一个bat文件,bat文件将运行该脚本,因此当我双击
执行脚本的bat文件。
在我的代码中,我做了以下事情:
ProcessStartInfo info = new ProcessStartInfo(@batchfilename + ".bat");
Process processToStart = new Process();
processToStart.StartInfo = info;
processToStart.Start();
批处理被执
我有一个名为oneclick.bat的控制器批处理文件,代码如下:
rem batch controller
rem wait for email input for ssh key generation...
rem call copyEnv.bat
call generateSshKey.bat %1
call gitClone.bat
在generateSshKey.bat中,我启动一个powershell脚本,如下所示:
rem make sure powershell is able to run
powershell.exe set-executionpolicy remote
我有一个启动进程的.bat文件,我想通过使用powershell脚本来执行一些自动化。蝙蝠档案必须仍然是不依赖我的理由。.bat文件包含一些环境变量的定义,如下所示:
@echo Opening solution.
set QTDIR=C:\Environment\Qt\5.15.2\msvc2019_64
set PHYSX_HEADER=C:\Environment\PhysX-3.3-3.3.4-1.3.4\PhysXSDK\Include
set PHYSX_LIB_DEBUG=C:\Environment\PhysX-3.3-3.3.4-1.3.4\PhysXSDK\Lib\vc16
我想在Jenkins管道中执行我的powershell脚本。因此,我使用bat调用我的.ps1文件
bat 'powershell "C:\\path\\to\\file\\script.ps1"'
在powershell中,我需要使用特定的路径。有没有办法通过这样的方式来实现这条道路:
bat 'powershell "C:\\path\\to\\file\\script.ps1"' -var PATH
不可重现,似乎是局部环境问题:
具有以下内容的bla.bat文件:
@echo off
所以这个脚本实际上应该什么都不做。现在,当尝试从PowerShell执行脚本时,输出如下:
PS C:\Users\lwnjup2> .\bla.bat
The system cannot find the path specified.
在CMD中,bat文件按例外方式执行(不执行任何操作...)。
所以我的问题是:为什么会有这个奇怪的警告?有没有办法,如何获得更多的输出(即找不到什么路径)?在我看来,在执行任何.bat (或.cmd)文件时,PowerShell似乎总是搜索某个路径。
PS:奇怪的