如何从ps1脚本在powershell控制台上执行程序

时间:2015-03-22 09:04:30

标签: python powershell

我是python和powershell的新手。为了尽可能自动化我的测试,当我对特定的.py文件进行更改时,我试图触发nosetests可执行文件在控制台上运行。

到目前为止,我在文件filemonitor.ps1中有以下代码。当我在控制台上运行它并对文件lexicon.py进行更改时,“Yippee”会在控制台中回显。好的开始。但是,我尝试了各种命令来调用动作块中的nosetests脚本。我的研究表明这样的事情应该有效 - > Invoke-Command -ScriptBlock {& $ program}
但是,控制台没有任何反应。我认为这可能与nosetests需要从项目文件夹中运行的事实有关,即在此示例中为ex48。但我不确定。

感谢任何指导。

filemonitor.ps1

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\envs\projects\ex48\ex48"
$watcher.Filter = "lexicon.py"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
$program = "C:\envs\acme\Scripts\nosetests.exe"

$changed = Register-ObjectEvent $watcher "Changed" -Action {
    Write-Host "Yippee"
}

1 个答案:

答案 0 :(得分:0)

首先在PowerShell中使用

来保证安全性没有脚本运行
Set-ExecutionPolicy bypass

第二 对于运行程序,你可以使用

Start-Process C:\Windows\System32\PING.EXE

或喜欢

.\winrar.exe

第三 如果您想在run.exebatch file中运行powershell脚本 你可以使用这种语法

powershell -noexit "& ""c:\test-webssl.ps1"""

好的和你的脚本 System.IO.FileSystemWatcher只看到你的路径,如果你创建了更改或删除通知你看到

$watcher = New-Object System.IO.FileSystemWatcher
 $watcher.Path = "S:\soheil"
 $watcher.IncludeSubdirectories = $false
 $watcher.EnableRaisingEvents = $true
 $changed = Register-ObjectEvent $watcher "Created" -Action { Write-Host 

"Created: $($event.Args.Fullpath)"}

如果您使用add-content创建txt文件,或者使用mkdir创建目录,那么使用另一个powershell就可以运行那些通知 创建: 或者在脚本中,您可以结束脚本调用$changed