如何使用powershell自动kill当前进程


PowerShell交流中心分类: Powershell基础如何使用powershell自动kill当前进程
1
Elijah0221 asked 4年 ago

请教各位大神,我有一个测试工具,返回值可以是持续的“.”,或者是“Machine is operational and has finished indexing”,具体如下所示。
C:\Users\v-zhuyin>D:\ZEST\PrefixSearchManager\PrefixSearchManager net.tcp://QYZN
EPRFXIIS820:55201/PrefixSearchService.svc -wait
Machine is operational and has finished indexing.
C:\Users\v-zhuyin>D:\ZEST\PrefixSearchManager\PrefixSearchManager net.tcp://QYZN
EPRFXIIS507:55201/PrefixSearchService.svc -wait
……………………………………………………………………..
……………………………………………………………………..
……………………………………………………………………..
……………………..^C
我用如下的脚本想实现对每一台server进行相同的测试,但是问题是,对于返回值是“.”的情况,我目前想不到很好的办法,使得它能够在产生了80个“.”后,process可以自动被kill掉。 希望大神们给些建议。

param($serverlist)
$servers = Get-Content $serverlist
$okcount=0
$errcount=0
$errserver

foreach ($server in $servers)
{
$result = (powershell psexec \\$server D:\ZEST\PrefixSearchManager\PrefixSearchManager net.tcp://$server:55201/PrefixSearchService.svc -wait)
if (($result -like “.” * 80) -or ($result -like “*Machine is operational and has finished indexing*”))
{
Write-Host $server “Indexing resumed” -ForegroundColor Green
Write-Host $result -ForegroundColor Green
$okcount = $okcount +1
“*” * 80
}

else
{
Write-Host $server “error” -ForegroundColor Red
Write-Host $result -ForegroundColor Red
$errcount = $errcount +1
$errserver = $errserver + $server
“*” * 80

$host.SetShouldExit(1)
exit 1
}
}

“*” * 50
Write-Host “Summary” -ForegroundColor Yellow
Write-Host $okcount “servers passed the smoke test!” -ForegroundColor Cyan
if ($errcount -ne 0 )
{Write-Host $errcount “servers didn’t pass the smoke test!” -ForegroundColor Red
Write-Host $errserver -ForegroundColor Red
    $host.SetShouldExit(3)
    exit 3

×用微信扫描并分享
1 Answers
0
Mooser Lee 管理员 answered 4年 ago

这个要使用控制台输出重定向,用进程A,启动进程B,同时把B的输出重定向给A,在A中判断输出,比如返回的点的数量。我在将《PowerShell脚本编译成EXE》有用到。
但是不推荐,其实进程B中输出的….是一个进度条,比如大约1秒钟输出一个,那80个点个就是80秒,这样就可以一旦B执行过期,直接kill掉。
 

Elijah0221 replied 4年 ago

想请问,如何实现timeout时间的定义呢, 在我看来之前的命令输出值是一直持续的“。”,这也就意味着这个process是不会被停止,也就是说我不能在这之后执行sleep 和 pskill的命令了。

Elijah0221 replied 4年 ago

想请问,如何实现timeout时间的定义呢, 在我看来之前的命令输出值是一直持续的“。”,这也就意味着这个process是不会被停止,也就是说我不能在这之后执行sleep 和 pskill的命令了。

Elijah0221 replied 4年 ago

想请问,如何实现timeout时间的定义呢, 在我看来之前的命令输出值是一直持续的“。”,这也就意味着这个process是不会被停止,也就是说我不能在这之后执行sleep 和 pskill的命令了。