Need a script to use a threading.

This topic contains 3 replies, has 4 voices, and was last updated by Profile photo of Kendal Van Dyke Kendal Van Dyke 2 years, 5 months ago.

  • Author
    Posts
  • #16314
    Profile photo of Sourav M
    Sourav M
    Participant

    Hi All,

    I want to run a T-SQL batch statement (select statement) in 1000+ servers. But if i run the script using regular powershell, it will take a long time as it will refer the serverlist .txt file to read each server entry, then it will call a powershell script where each server will be passed as a loop then the results will be copied to an output file.

    Instead of that, I think to use PS thread where a bunch of 10 servers will be taken a at a time, so that the select statement which I want to run against the servers would be completed sooner.

    Reply me with your inputs.

    Thanks.

  • #16316
    Profile photo of Don Jones
    Don Jones
    Keymaster

    PowerShell is a single threaded application. Consider using background jobs.

  • #16318
    Profile photo of Martin Nielsen
    Martin Nielsen
    Participant

    You could compress your script into a single T-SQL statement instead of running 1000+ SELECT queries

    $servers = Get-Content servers.txt
    $servers = $servers -join "','"
    $query = "SELECT * FROM table WHERE servername IN ('$servers')
    

    Maybe?

  • #16353
    Profile photo of Kendal Van Dyke
    Kendal Van Dyke
    Participant

    Have you looked into background runspaces?

    There's a great into to the concept at [url]http://learn-powershell.net/2012/05/13/using-background-runspaces-instead-of-psjobs-for-better-performance/
    [/url]
    I've also got background runspaces heavily used in [url]https://sqlpowerdoc.codeplex.com/[/url] – feel free to look at the code and use the relevant parts as needed to get up to speed on how runspaces work.

You must be logged in to reply to this topic.