【问题标题】:Concurrent Powershell jobs not running command并发 Powershell 作业未运行命令
【发布时间】:2015-05-21 20:14:10
【问题描述】:

大家好,第一次发贴的老读者,我的剧本有点问题,希望有人能检查一下并指出我哪里出错了,如下:

$Servers = gc "C:\ServerList.txt"
 $SB = {
    Start-Process {cmd (C:\psexec.exe \\$Server -u username -p password cmd /c "echo.| powershell C:\Autolog.ps1")
       }
Foreach ($Server in $Servers) 
    {
    Start-Job -ScriptBlock $SB
    }

基本上我想让这个脚本做的是为“Serverslist.txt”中的每个服务器启动一个 PSEXEC,然后在所述服务器上启动一个 Powershell 脚本

我看到的是作业开始了,但我的 psexec 没有在服务器上触发,我知道这条线很好,因为我已经完成了对该命令的隔离测试并手动触发了它

注意:删除目录和凭据以维护隐私

【问题讨论】:

    标签: multithreading powershell concurrency server


    【解决方案1】:

    这可能比它需要的复杂得多。我会像这样针对该计算机列表运行一个脚本块:

    $cred = New-Object System.Management.Automation.PSCredential ("domain\username",(ConvertTo-SecureString 'password' -asplaintext -force))
    foreach ($server in $servers) {
        Invoke-Command -ComputerName $comp -ScriptBlock {. C:\Autolog.ps1} -Credential $cred
    }
    

    【讨论】:

    • 感谢您的回复 Paul,这是假设启用了 Powershell 远程访问吗?我忘了说它不是。另外,我对 powershell 不是很流利,这是一个边走边学的东西,干杯迈克尔
    • 你是对的,需要启用 powershell 远程处理。不是有什么特别的原因吗?设置非常快速和容易;在目标服务器上:Enable-PsRemoting -force 然后winrm quickconfig
    • 因为这里有 1000 台服务器,不幸的是,我无权进行所需的更改,尝试使用 PSEXEC,尽管显然两者之间存在问题
    【解决方案2】:

    您的作业不知道$Server 的含义,因为作业在它们自己的进程中运行,因此不访问父进程的变量。你必须通过论证。试试这个:

    Start-Job -ScriptBlock $SB -ArgumentList $Server

    【讨论】:

      【解决方案3】:

      感谢帮助,最终把它搞定并让它做想做的事,脚本如下:

      $Servers = gc "C:\ServerList.txt"
      Foreach ($Server in $Servers) 
          {
          [String]$cmd = "& cmd (C:\psexec.exe \\$Server -u Username -p Password cmd /c C:\Autolog.bat)"
          [ScriptBlock]$SB = [ScriptBlock]::Create($cmd)
          Start-Job -ScriptBlock $SB -ArgumentList $Server
          echo "Started Script on $Server"
          }
      

      我不得不将一些命令移到 .bat 中,因为我没有时间解决问题,但我本质上是 C:\Autolog.bat 包含“powershell.exe C:\Autolog.ps1 " 来自第一个脚本帖子

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-20
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多