我是python和powershell的新手。为了尽可能自动化我的测试,当我对特定的.py文件进行更改时,我试图触发nosetests可执行文件在控制台上运行。
到目前为止,我在文件filemonitor.ps1中有以下代码。当我在控制台上运行它并对文件lexicon.py进行更改时,“Yippee”会在控制台中回显。好的开始。但是,我尝试了各种命令来调用动作块中的nosetests脚本。我的研究表明这样的事情应该有效 - > Invoke-Command -ScriptBlock {& $ program}
但是,控制台没有任何反应。我认为这可能与nosetests需要从项目文件夹中运行的事实有关,即在此示例中为ex48。但我不确定。
$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"
}
答案 0 :(得分:0)
首先在PowerShell中使用
来保证安全性没有脚本运行Set-ExecutionPolicy bypass
第二 对于运行程序,你可以使用
Start-Process C:\Windows\System32\PING.EXE
或喜欢
.\winrar.exe
第三
如果您想在run.exe
或batch 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