相关疑难解决方法(0)

我可以让&&在Powershell中工作吗?

&&众所周知难以在谷歌搜索,但我发现的最好的是这篇文章说要使用-and.

不幸的是它没有提供任何更多的信息,我无法找到我应该做的事情-and(再次,一个众所周知的难以搜索)

我正在尝试使用它的上下文是"执行cmd1,如果成功,执行cmd2",基本上这样:

csc /t:exe /out:a.exe SomeFile.cs && a.exe
Run Code Online (Sandbox Code Playgroud)

这应该是一个容易的几个代表谁知道,谢谢!


编辑:如果你只想在一行上运行多个命令,而你不在乎第一个是否失败,你可以使用;我的大多数用途这是好的

例如:kill -n myapp; ./myapp.exe.

syntax powershell

150
推荐指数
5
解决办法
8万
查看次数

什么是Bash的&&和||的PowerShell等价物 运营商?

在Bash中,我可以轻松地做类似的事情

command1 && command2 || command3
Run Code Online (Sandbox Code Playgroud)

这意味着运行command1,如果command1成功运行command2,并且command1无法运行command3.

什么是PowerShell中的等价物?

bash powershell language-comparisons

30
推荐指数
2
解决办法
2万
查看次数

使用PowerShell运行应用程序并等待它完成

是否可以运行应用程序PowerShell并等待它完成?例如,我想运行Thunderbird并在用户关闭它之后,然后将某些内容输出到输出中?

第二件事 - 是否可以使用" thunderbird开始"菜单中的关键字搜索此应用程序(当我们手动输入时,它会返回结果Mozilla Thunderbird) - 并运行它?

谢谢 !

powershell windows-7

20
推荐指数
1
解决办法
3万
查看次数

如何在Powershell中管理.exe执行的所有输出?

在Powershell中,我正在运行psftp.exe这是PuTTy的主页.我这样做:

$cmd = "psftp.exe"
$args = '"username@ssh"@ftp.domain.com -b psftp.txt';
$output = & $cmd $args
Run Code Online (Sandbox Code Playgroud)

这有效; 我正在打印出来$output.但它只捕获该变量中的一些输出(如"远程工作目录[...]")并将其他输出抛出到如下错误类型:

psftp.exe : Using username "username@ssh".
At C:\full_script.ps1:37 char:20
+         $output = & <<<<  $cmd $args
    + CategoryInfo          : NotSpecified: (Using username "username@ssh".:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
Run Code Online (Sandbox Code Playgroud)

这个"使用用户名......"等看起来像普通的FTP消息.如何确保所有输出都被输入$output

powershell output

18
推荐指数
2
解决办法
5万
查看次数

如何在PowerShell中异步捕获进程输出?

我想从我在Powershell脚本中启动的进程捕获stdout和stderr,并将其异步显示到控制台.我已经通过MSDN和其他博客找到了一些关于这样做的文档.

创建并运行下面的示例后,我似乎无法异步显示任何输出.所有输出仅在进程终止时显示.

$ps = new-object System.Diagnostics.Process
$ps.StartInfo.Filename = "cmd.exe"
$ps.StartInfo.UseShellExecute = $false
$ps.StartInfo.RedirectStandardOutput = $true
$ps.StartInfo.Arguments = "/c echo `"hi`" `& timeout 5"

$action = { Write-Host $EventArgs.Data  }
Register-ObjectEvent -InputObject $ps -EventName OutputDataReceived -Action $action | Out-Null

$ps.start() | Out-Null
$ps.BeginOutputReadLine()
$ps.WaitForExit()
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我希望在程序执行结束之前在命令行上看到"hi"的输出,因为应该触发OutputDataReceived事件.

我已经尝试过使用其他可执行文件 - java.exe,git.exe等.所有这些都具有相同的效果,所以我不得不认为有一些我不理解或错过的简单.还需要做什么才能异步读取stdout?

powershell events asynchronous

17
推荐指数
3
解决办法
1万
查看次数

在Windows PowerShell中有条件地执行进程(例如Bash中的&&和||运算符)

我想知道是否有人知道有条件地执行程序的方法取决于前一个程序的退出成功/失败.如果program1在没有测试LASTEXITCODE变量的情况下成功退出,有没有办法在program1之后立即执行program2?我尝试使用-band和-and运算符无济于事,尽管我觉得它们无论如何都不会工作,最好的替代品是分号和if语句的组合.我的意思是,当在Linux上从源代码自动构建一个包时,&&运算符不能被打败:

# Configure a package, compile it and install it
./configure && make && sudo make install
Run Code Online (Sandbox Code Playgroud)

假设我实际上可以在PowerShell中使用相同的构建系统,PowerShell将要求我执行以下操作:

# Configure a package, compile it and install it
.\configure ; if ($LASTEXITCODE -eq 0) { make ; if ($LASTEXITCODE -eq 0) { sudo make install } }
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用多行,将其保存在文件中并执行脚本,但其目的是简洁(保存击键).也许它只是PowerShell和Bash之间的区别(甚至是支持&&运算符的内置Windows命令提示符)我需要调整,但如果有更清洁的方法,我很想知道.

powershell operators exit-code

7
推荐指数
1
解决办法
2125
查看次数

如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?

我有一个文件夹,.doc我想将其转换为.txt格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?这些文件位于C:\Temp\Test.

windows powershell doc libreoffice

3
推荐指数
1
解决办法
7651
查看次数

在 powershell 管道中,如何等待 cmdlet 完成后再继续下一个?

考虑以下函数:

function myFunction {
  100
  sleep 1
  200
  sleep 1
  300
  sleep 1
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它将沿着管道一一发出这些值。

我想等待所有值发出后再继续。喜欢

myFunction | waitForThePreviousCommandToComplete | Format-Table 
Run Code Online (Sandbox Code Playgroud)

我希望上面的格式表接收整个数组,而不是一对一的项目。

在 Powershell 中是否可以实现?

powershell

3
推荐指数
1
解决办法
438
查看次数

等待其他会话中的多个同时Powershell命令完成,然后再运行下一个命令

我正在尝试获取主Powershell脚本来执行以下操作:

  1. 在其他3个Powershell会话中运行命令(它们都运行约1个小时-我希望它们同时运行,以便它们可以同时完成所有工作)
  2. 等待所有其他3个Powershell会话完成
  3. 在初始Powershell窗口中继续执行其余命令

极其简单的例子

我的实际用例与以下类似,不同之处在于时间总是变化,ECHO "hi"仅在所有其他(3)命令完成后才发生(在这种情况下,我们知道它们将花费10000秒,但是在我的实际用例中,这种情况会有所不同)很多)。还要注意,尚不清楚这3个命令中的哪个命令每次花费的时间最长。

start powershell { TIMEOUT 2000 }
start powershell { TIMEOUT 3000 }
start powershell { TIMEOUT 10000 }
ECHO "hi"
Run Code Online (Sandbox Code Playgroud)

我可以看到(在这里)我可以&在命令前面放置一个命令,以便告诉powershell在完成后续命令之前要等到它完成为止。但是,我不知道如何使用3个同时命令

powershell

2
推荐指数
1
解决办法
238
查看次数