标签: powershell

如何告诉PowerShell在开始下一个命令之前等待每个命令结束?

我有一个PowerShell 1.0脚本来打开一堆应用程序.第一个是虚拟机,其他是开发应用程序.我希望虚拟机在其他应用程序打开之前完成启动.

在bash我可以说 "cmd1 && cmd2"

这就是我所拥有的......

C:\Applications\VirtualBox\vboxmanage startvm superdooper
    &"C:\Applications\NetBeans 6.5\bin\netbeans.exe"
Run Code Online (Sandbox Code Playgroud)

powershell execution wait

198
推荐指数
6
解决办法
39万
查看次数

在PowerShell中定时执行命令

有没有一种简单的方法来计算PowerShell中命令的执行时间,比如Linux中的'time'命令?
我想出了这个:

$s=Get-Date; .\do_something.ps1 ; $e=Get-Date; ($e - $s).TotalSeconds
Run Code Online (Sandbox Code Playgroud)

但我想要更简单的东西

time .\do_something.ps1
Run Code Online (Sandbox Code Playgroud)

powershell time

198
推荐指数
7
解决办法
12万
查看次数

如何在PowerShell中输出内容

我正在批处理文件中运行PowerShell脚本.该脚本获取一个网页并检查该页面的内容是否为字符串"OK".

PowerShell脚本向批处理脚本返回错误级别.

批处理脚本由ScriptFTP执行,ScriptFTP是一个FTP自动化程序.如果发生错误,我可以让ScriptFTP通过电子邮件将完整的控制台输出发送给管理员.

在PowerShell脚本中,如果它不是"OK",我想从网站输出返回值,因此错误消息包含在控制台输出中,因此也包含在状态邮件中.

我是PowerShell的新手,不知道要使用哪个输出函数.我可以看到三个:

  • 写主机
  • 写输出
  • 写入错误

用什么来写Windows等价的东西是正确的stdout

windows powershell

197
推荐指数
5
解决办法
54万
查看次数

如何在PowerShell中将多个命令分割为多个命令

如何在PowerShell中执行如下命令并将其拆分为多行?

&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:contentPath="c:\workspace\xxx\master\Build\_PublishedWebsites\xxx.Web" -dest:contentPath="c:\websites\xxx\wwwroot\,computerName=192.168.1.1,username=administrator,password=xxx"
Run Code Online (Sandbox Code Playgroud)

powershell

196
推荐指数
7
解决办法
18万
查看次数

如何从字符串中执行任意本机命令?

我可以通过以下方案表达我的需求:编写一个接受字符串的函数作为本机命令运行.

这并不是一个想法:如果你正在与公司其他地方的其他命令行实用程序连接,那么它将为你提供逐字运行的命令.因为您不控制命令,所以您需要接受任何有效的命令作为输入.这些是我无法轻易克服的主要问题:

  1. 该命令可能执行生活在其中包含空格的路径中的程序:

    $command = '"C:\Program Files\TheProg\Runit.exe" Hello';
    
    Run Code Online (Sandbox Code Playgroud)
  2. 该命令可能包含带空格的参数:

    $command = 'echo "hello world!"';
    
    Run Code Online (Sandbox Code Playgroud)
  3. 该命令可能包含单蜱和双蜱:

    $command = "echo `"it`'s`"";
    
    Run Code Online (Sandbox Code Playgroud)

没有干净的方法来完成这个?我只能设计出奢华和丑陋的变通方法,但对于脚本语言,我觉得这应该是简单的.

powershell scripting

195
推荐指数
3
解决办法
22万
查看次数

在PowerShell中提示用户输入

我想提示用户输入一系列输入,包括密码和文件名.

我有一个使用的例子host.ui.prompt,这似乎是明智的,但我无法理解回报.

有没有更好的方法来获得PowerShell中的用户输入?

powershell

195
推荐指数
3
解决办法
44万
查看次数

如何获取正在执行的cmdlet的当前目录

这应该是一个简单的任务,但我已经看到了几次尝试如何获取执行cmdlet所在目录的路径,并取得了成功.例如,当我执行C:\temp\myscripts\mycmdlet.ps1哪个有设置文件时,C:\temp\myscripts\settings.xml我希望能够存储C:\temp\myscripts在一个变量中mycmdlet.ps1.

这是一个有效的解决方案(虽然有点麻烦):

$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$settingspath = $directorypath + '\settings.xml'
Run Code Online (Sandbox Code Playgroud)

另一个人建议这个解决方案只适用于我们的测试环境:

$settingspath = '.\settings.xml'
Run Code Online (Sandbox Code Playgroud)

我非常喜欢后一种方法,并且更喜欢每次都必须将文件路径解析为参数,但我不能让它在我的开发环境中工作.有没有人建议做什么?它与PowerShell的配置方式有关吗?

powershell cmdlet

195
推荐指数
10
解决办法
35万
查看次数

"Write-Host","Write-Output"或"[console] :: WriteLine"之间有什么区别?

似乎有许多不同的输出消息的方法.是通过什么东西输出之间的有效差异Write-Host,Write-Output[console]::WriteLine

我还注意到,如果我使用:

write-host "count=" + $count
Run Code Online (Sandbox Code Playgroud)

+被包括在输出.为什么?在写出之前,是否应该对表达式进行求值以生成单个连接字符串?

powershell

186
推荐指数
4
解决办法
24万
查看次数

如何在执行期间将PowerShell的输出重定向到文件

我有一个PowerShell脚本,我想将输出重定向到一个文件.问题是我无法改变调用此脚本的方式.所以我做不到:

 .\MyScript.ps1 > output.txt
Run Code Online (Sandbox Code Playgroud)

如何在执行期间重定向PowerShell脚本的输出?

powershell scripting stdout

185
推荐指数
9
解决办法
54万
查看次数

PowerShell中的三元运算符

据我所知,PowerShell似乎没有所谓的三元运算符的内置表达式.

例如,在支持三元运算符的C语言中,我可以编写如下内容:

<condition> ? <condition-is-true> : <condition-is-false>;
Run Code Online (Sandbox Code Playgroud)

如果在PowerShell中确实不存在,那么实现相同结果的最佳方法(即易于阅读和维护)是什么?

powershell ternary-operator conditional-operator

182
推荐指数
11
解决办法
9万
查看次数