首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell psexec作业

Powershell psexec作业
EN

Stack Overflow用户
提问于 2014-03-24 00:31:25
回答 1查看 717关注 0票数 1

我在Stackoverflow的另一篇文章中尝试了一下:

代码语言:javascript
复制
$serverlist=$listbox1.SelectedItems

$jobs = foreach ($serverName in $serverlist) {
  Start-Job -Name "PingJob $serverName" -ArgumentList $serverName -ScriptBlock {
      param($serverName)
      if (Test-Connection -ComputerName $serverName -Count 1 -Quiet)
      {
        C:\Localbin\PsExec.exe -s \\$serverName ping cadc02 -n 30 > \\$serverName\pingresult\$serverName.txt
      }
   }
}

$jobs | Wait-Job 
$jobs | Receive-Job

它可以工作并创建输出文件,但是缺少完整的数据。它只是说

代码语言:javascript
复制
Pinging cadc02.xyz.net [192.168.100.2]

但是其余的代码就像

代码语言:javascript
复制
Reply from 192.168.200.3: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.200.3:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

都不见了。

EN

回答 1

Stack Overflow用户

发布于 2014-03-26 20:07:28

下面的代码如何:

代码语言:javascript
复制
$serverlist=$listbox1.SelectedItems

$jobs = foreach ($serverName in $serverlist) {
  Start-Job -Name "PingJob $serverName" -ArgumentList $serverName -ScriptBlock {
      param($serverName)
      if (Test-Connection -ComputerName $serverName -Count 1 -Quiet)
      {
        Invoke-Command -ComputerName $serverName -ScriptBlock { & ping cadc02 -n 30 } > "C:\temp\$serverName.txt"
      }
   }
}

$jobs | Wait-Job 
$jobs | Receive-Job

这段代码有一个很大的“如果”,那就是它通过Invoke-Command使用Powershell远程处理,而不是系统内部的psexec。

如果psexec是必需的(出于某种原因,您不能对计算机执行powershell-remote ),那么这对您将不起作用。

另外:将代码中的"C:\temp\“更改为适合您的本地文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22593651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档