speeding up things with jobs

Welcome Forums General PowerShell Q&A speeding up things with jobs

This topic contains 2 replies, has 2 voices, and was last updated by

4 years, 4 months ago.

  • Author
  • #20707

    Points: 1
    Rank: Member

    im trying to speed up the results I get by running them as jobs on all of my servers(in this case its get-messagetracking command to track emails sent in last hour)

    so I hope im doing this correct this is what my code looks like so far:

    $params = @{

    end = $end

    event= $event

    ResultSize = 'Unlimited'

    server = $server

    start= $start





    $event= 'send'

    $Data = @()

    # The servers are processed

    ForEach ($server in $hubservers){

    $sb = [scriptblock]::create("get-messagetrackinglog $(@params)")

    $init_sb = {add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010}

    $data +=Start-Job -Name $server -ScriptBlock $sb -InitializationScript $init_sb


    getting something like:
    Get-Job |Receive-Job

    Cannot bind parameter 'End'. Cannot convert the "string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider), string

    ToString(string format, System.IFormatProvider provider), string IFormattable.ToString(string format, System.IFormatProvider formatProvider), string

    IConvertible.ToString(System.IFormatProvider provider)" value of type "System.Management.Automation.PSMethod" to type "System.DateTime".

    + CategoryInfo : InvalidArgument: (:) [Get-MessageTrackingLog], ParameterBindingException

    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Exchange.Management.TransportLogSearchTasks.GetMessageTrackingLog

    + PSComputerName : localhost

    once I settle this thing I ofcourse will add more servers and add a line to get all jobs and receive all the data from them(that's basic idea atleast)
    any help would be appreciated
    I solved this error now im getting :
    a positional parameter cannot be found that accepts argument '10:49:33'
    solved that too by putting " on date
    I have a feeling that I am totally off here and not really running the job on the server:)
    maybe I should go the route of:
    $server| invoke-command -scriptblock {get-messagetrackinglog -resultssize unlimited -eventid "send" -start $start -end $end} -asjob
    but then I get "parameter set cannot be resolved using the specified named parameters.....

  • #20711

    Points: 1,811
    Helping HandTeam Member
    Rank: Community Hero

    You're passing something wacky to a command parameter. Specifically, $end contains something that isn't being loved.

    And, with your updates, I'm not clear what problem we're trying to solve. Would you maybe start a new post that provides some context and what you're asking for help with at this point?

  • #20712

    Points: 1
    Rank: Member

    yeah your right even I am confused at this point:)

    bottom line what I wanted to do is this:
    I have a script that works fine and what it does is it uses invoke-command to run get-messagetrackinglog on exchange servers to find stuff(like how many emails were sent in the last hour)
    so I have a foreach loop running invoke-command and all is good.

    I was trying to figure out away to make it even faster(instead of waiting for the loop to run on each of the servers)
    so workflow, I love them>>cant do it because of its own limitations
    then I thought either invoke-command -asjob or just jobs in general to accomplish my goal
    not sure what is the fastest way.

The topic ‘speeding up things with jobs’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort