Remote Execution from Powershell Script called from Team Foundation Build

Hello
   I am trying to deploy a sharepoint solution with a sharepoint script, with this approach:
First i test the environment, using windows powershell console
New-PSSession -ComputerName developmentserver01
Enter-PSSession -computername developmentserver01
d:
cd d:\deploymentscripts
.\deploysharepoint.ps1
 Then i start the automation:
   1.- TFS runs a build that call at the end to "deploy.ps1" locally in the build server. ---> this is working.
   2.- desploy1.ps1 copy the drop files to the development environment developmentserver01 shared folder.
   3.- after copy the files,  deploy1.ps1 connet with the development environment machine developmentserver01  using remote connection commands from powershell -->this is working.
   4.- this step fails, in this step i try to execute the deployment script deploySharepoint.ps1 that has copied in the development environment machine in the step 2.
     First using commands inside the script like in the powershell console, but i see that the commands are running inside the TFS build machine not in the machine that i connected whit remote connection
d:
cd d:\deploymentscripts
.\deploysharepoint.ps1Later using different options (invoke-command, ...) only this optionk works:
Invoke-Command -computername developmentserver01 -scriptblock{d:\DeploymentScripts\deploysharepoint.ps1 -solutionNames @("parameter1")}
The problem it´s that i think that invoke-command don´t work like the commands using powershell console , because the script show the error that the user don´t haver permissions for accesing the Farm of sharepoint. If i run the script with remote session in a power shell console as show at the beginning of the post, all things work fine. How can i run the remote script deploysharepoint.ps1 with remote session from the script desploy.ps1, like using powershell console?

have you tried passing credentials to it maybe use credssp, you could pass new session to your invoke-command although this shouldnt make difference, i basically think that when you opened this ps session it sees you admin therefore when you do the enter
session you are still admin, when you use the invoke i am not so sure it keeps your creds..
$s = New-PSSession -ComputerName developmentserver01
Invoke-Command -session $s -scriptblock{d:\DeploymentScripts\deploysharepoint.ps1 -solutionNames @("parameter1")}

Similar Messages

  • How to remove Access 2007 (MDB) project from Team Foundation using VB6/VBA?

    Hi,
    is there any way how to remove A2007 (MDB) project from Team Foundation using VB6 or VBA? CompactDatabase method doesn't seem to help.
    I need to remove back-end MDBs before deploying the whole project. In other words, the MDBs themselves should remain in TF but I'd like to remove their copies that should be deployed (distribution set). I wrote a simple function for compacting MDBs but it
    doesn't do the trick. When I compact an MDB in Access 2007 I'm always asked whether I want to remove it from source control.
    Thank you very much in advance.

    What are the copies you referring?
    These are physical copies of local MDB files. I can't (don't want) to deploy MDB files that are handled by source code control (SCC) since those files hold information about SCC (local directory mapping). Users might not understand the message they get when
    they open such MDB in Access, eg.:
    This database was named 'C:\Projekty\P1\DB\nP01.mdb' but has been moved, copied, or renamed. Source code control features will be disabled.
    That's why I want to remove the SCC information from MDB files. The only way I know so far is to use "Compact & Repair database" in MS Access 2007. I'd like to point you to http://msdn.microsoft.com/en-us/library/aa155494%28v=office.10%29.aspx (it's
    similar to Access 2007 & Team Foundation):
    Using the Compact Database Command
    In order to take a database that is under source code control and deliver it to a user, you need a way to cut the database's ties to source code control. When you compact a database that is under source code control, Microsoft Access 2000 prompts you
    to remove the database from source code control.
    To remove the database from source code control, Microsoft Access simply removes the Visual SourceSafe properties from the Microsoft Access database and its objects.
    I would like to remove Access MDBs from SCC programmatically so that I can
    significantly reduce time that I spend on deploying the application. In one of our applications there are five back-end MDBs that are under SCC and it takes some time to remove them from
    SCC manually. I have to do it anytime we release new version, even for releases that are determined as testing releases for internal testing within our company.
    Thank you very much for your time.

  • Powershell script calling batch file, how to "echo" or otherwise pass in two or more values asked for by batch file

    I've been having a lot of problems trying to get an old batch file we have laying around, to run from my powershell script. The batch file actually asks for two inputs from the user. I've managed to put together a powershell that echos a response, but of
    course, that only will answer one of the prompts. As usual, I've simplified things here to get my testing done. The batch file looks like this:
    @ECHO OFF
    SET /P CUSTID=Customer Number:
    SET /P DBCOUNT=Number of Live Databases:
    ECHO Customer Id was set to : %CUSTID%
    ECHO Database Count was set to : %DBCOUNT%
    Two inputs, two echos to verify values have been set. Now, the powershell looks like this:
    Param(
     [string]$ClientADG,
        [string]$ClientDBCount,
        [scriptblock]$Command
    $ClientADG = '1013'
    $ClientDBCount = '2'
    $Response = $ClientADG + "`r`n" + $ClientDBCount
    $Command = 'Invoke-Command -ComputerName localhost -ScriptBlock {cmd /c "echo ' + $ClientADG + ' | E:\Scripts\Setup\Company\DatabaseSetupTest.bat"}'
    powershell -command $Command
    Output looks like:
    Customer Number: Number of Live Databases: Customer Id was set to : 1013
    Database Count was set to :
    As expected, as I'm only passing in one value. I can't figure out how to get a second value passed in for the second prompt. Instead of $ClientADG, I tried to mash the two value together in the $Response variable with a cr/lf or a cr or a lf in between,
    but no go there either. The first input gets set to the second value, and second input is blank still. In the essence of time, I need to get this batch file called from Powershell to get some folks productive while I actually rewrite what the batch file does
    in another powershell, so it can be integrated into other things. (I'm automating what a bunch of people spend hours doing into multiple scripts and eventually one BIG script so they can focus on doing their real jobs instead).
    How do I get this right in powershell? I don't want to modify the batch file at all at this point, just get it running from the powershell.
    Thanks in advance!
    mpleaf

    It's a "simple" test so I can figure out how to get the arguments passed from ps to bat. The bat file looks like this:
    @ECHO OFF
    SET CUSTID = %1
    SET DBCOUNT = %2
    ECHO Customer Id was set to : %CUSTID%
    ECHO Database Count was set to : %DBCOUNT%
    That's it. The PS script looks like this:
    Invoke-Command-ComputerName myserver-ScriptBlock{cmd/c"E:\Scripts\Setup\Company\DatabaseSetupTest.bat
    1013 2"}
    That's it. The bat file exists on "myserver", and I'm getting the echo back, but without the values.
    mpleaf

  • Remote Execution of a script with Get-Child Item cannot find path

    Hello!
    I have been tackling this problem for a few days now and I just can't find the answer.
    I want to execute scripts remotely in parallel so that each of remote machine will run the script with their own resources.
    Below is just the simple script in the local machine server1
    $Folder = \\server1\folder\subfolder
    GCI $folder
    It works fine it I call that through my client with this I am using in my client
    invoke-command -computername server -scriptblock {powershell.exe C:\filepath\script.ps1}
    But if I change the script inside to look at another machine server 2 and do
    $folder = \\server2\folder\subfolder
    It generates an error that it cannot find that path when trying to call GCI remotely. Note that it still works if the script is run locally.
    I did some research and I see about the double-hop using credssp but I just can't get it to work.
    Any help would be appreciated.

    Each system that you're remoting into (or calling Invoke-Command against) will need to have the WSManCredSSP server role enabled. You can do this through group policy, or you can do it on a per-machine basis. Here's what you would run on a computer if you
    want to only enable it on certain computers (you should be able to run this remotely):
    Enable-WSManCredSSP -Role Server
    The system that you're running everything from will be the CredSSP client. You'll need to run this from it:
    Enable-WSManCredSSP -Role Client -DelegateComputer *.yourdomain.com
    You'll need to change the 'yourdomain.com' to your domain name (or, you could simply put a * for the delegate computer, just be aware that this will allow your computer to pass credentials along to any computer when you tell a cmdlet to use CredSSP authentication).
    Now, to use Invoke-Command, do this:
    $cred = Get-Credential
    Invoke-Command -computername server.yourdomain.com -scriptblock {"Commands go here"} -Authentication CredSSP -Credential $cred
    Notice that the -ComputerName parameter is using a fully qualified domain name. If your -DelegateComputer parameter above used a domain name, you'll have to have the FQDN here.
    Let me know if that works for you. If you want more information, you can check out the Enable-WSManCredSSP and Disable-WSManCredSSP help topics.
    Hi Rohn,
    I tried doing your instruction but it gives me this error
    Connecting to remote server failed with the following error message : The WinRM client cannot process the request because the server name cannot be resolved. For more information, see the about_Remote_Troubleshooting Help topic.
    After enabling the client and server with the wsmancredssp
    Here is the command I executed that produced the error
    invoke-command -computername server01.domain01 -scriptblock {get-process} -authentication credssp -credential $cred.
    Thank you very much for all the help.

  • Remote execution with powershell

    Hi All,
    I have admin access to all machines in my environment(XP, WIN7 ,Server OS)..
    Now my query is, Can i run the power shell command (to get the inventory from XP,Win7,Server OS) ... (XP,win7 machines will accept to run the power shell commands,do we need to enable any thing in this machines)
    do we have any sample command-lets from pulling ARP entry and registry info from  remote machine's

    Hi,
    First I  want to say some thing , I'm not much familiar with power shell.. So i'm asking as suggestions..How it will work(do we need to enable in all machine's XP,win7 to get the inventory of application installed). You might be Good in this technology.
    But it does't mean that every one should be in same....
    Don't say that "vague questions" /not scripting questions. 
    There is no such command as you are trying to use.
    then what is this...?
    http://gallery.technet.microsoft.com/scriptcenter/Get-a-List-of-Installed-c47393ed
    Its relevant to my requirement..
    I asked when i executed the above command(Get-Help New-OSCInstalledApplication -Full)..I got an
    error not relavent command ..So i asked..
    And what your trying to say you don't want to add any other queries in same question to relevant ... you want to be add in new thread
    question to Answer you ?

  • SOLVED: powershell script working on its own, access denied when called from a service

    Hi powershell experts,
    I'm using a powershell script, called by a service with serviceaccount PWSService, which gives an exception denied. This powershell script sets up a remote powershell connection(with a specific account), and runs some powershell scripts remotely on
    that server. 
    When I launch the powershell script manually, by opening the powershell console myself(with "run as" PWSService), the remote session starts and I'm able to succesfully run commands through it.
    The PWSService is local admin on the server.
    Is there any diffrence in behaviour when powershell scripts are started by a service or started as a "user"? Can someone shed a light on this?
    Thanks in advance,
    Robin
    MCTS, MCPD

    hi mjolinor,
    We use the following class for the service(Microsoft
    live@edu connector):
    http://msdn.microsoft.com/en-us/library/system.management.automation.runspaces.wsmanconnectioninfo%28v=vs.85%29.aspx
    I use Enter-PSSession to start the commands in de powershell console which works.
    MCPD

  • TEO 2.3 and Powershell remote execution error

    Hi,
    I am running into errors when trying to run powershell scripts on a remote target. I have tried the following things so far using just "get-date" as a command in the script.
    1. Set remote execution policy to unrestricted.
    2. Enable the checkbox for accessing remote resources.
    And after setting the above, I get the following error.
    Exception has been thrown by the target of an invocation.
    Access is denied.
    Now, if I try using the Run Windows Command activity, I am able to run the required commands on the remote target, but powershell script activity fails for the same target.
    Surprisingly, this works fine on TEO2.2
    Thanks,
    Rishikesh R.

    For #2, why did you enable that? This means you need to enable remote resources, like a remote shared drive or something like that. So you make a double hop(in Microsoft terms). You hop once to your target and once again to your remote shared drive. WMI does not allow this for security policy reasons so we have to do something else when you select that.
    Try unchecking it and running it and see if that helps. If not, open a TAC case and someone from support can assist you.
    -shaun roberts
    CPO/CIAC Support Team Lead
    [email protected]

  • How to make the width of powershell script's output greater than 80 column?

    Hi,
    I am trying to remotely execute a powershell script through ssh, and I found the output of my script is only 80 width, a carriage-return and a line-feed are inserted after 79th column, and continue presenting the 80th value of each row onto another line.
    I want it greater than 80, such as 512.
    The code to print the output in my script is like:
    $allInfo | ConvertTo-Xml -as Stream -NoTypeInformation -Depth 1
    Any help will be really appreciated!

    But when I run the powershell script manually, I get the following error message, I do not know why, but anyway, my problem is resolved.
    Exception setting "BufferSize": "Cannot set the buffer size because the size specified is too large or too small.           
    Parameter name: value                                                                                                       
    Actual value was 512,25."                                                                                                   
    At C:\Users\qzhang\Documents\GetVM.ps1:30 char:16                                                                           
    + $Host.UI.RawUI. <<<< BufferSize = New-Object Management.Automation.Host.Size (512, 25)                                    
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException                                                    
        + FullyQualifiedErrorId : PropertyAssignmentException  
    Yeah, that's a good question.  I get the same thing here.  The longer solution the post covers which I've included below does work interactively, and looking at the differences it appears to be related to the buffer height.  My guess is when
    the existing console window already has more rows in the buffer than the 25 rows in height the command tries to define, this error occurs.
    if( $Host -and $Host.UI -and $Host.UI.RawUI ) {
    $rawUI = $Host.UI.RawUI
    $oldSize = $rawUI.BufferSize
    $typeName = $oldSize.GetType( ).FullName
    $newSize = New-Object $typeName (500, $oldSize.Height)
    $rawUI.BufferSize = $newSize

  • Team Foundation Server 2013 Refresh button not refreshing Custom Control values in TFS Templates

    Hi all,
    We have recently migrated from Team Foundation Server 2010 to Team Foundation Server 2013 Update 2. In TFS 2013 template design we found the refresh form control (inbuilt control of TFS) which is unable to refresh the custom control values that is built
    by us. Is there any way that we can programatically modify to enable the refresh button work with custom control.
    Please find below screenshot link for reference.
    http://postimg.org/image/z4mo3t8r9/
    SaranRam

    Hi SaranRam,
    The refresh button is there to allow the data that populated the work item to be refreshed. The data that you want refreshed is part of the rendering of the form and would only be refreshed when the browser refreshes. Refer to MrHinsh's reply in this
    page.
    Best regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Remote PowerShell script execution from web page

    I am building a web interface for Active Directory for a school project. (It will NOT touch the Internet, it is for intranet use.) I want to click a "button" on my interface and execute a PowerShell script on a server. (example: Clicking on "AD Users" would execute a PS script to get a list of users) Does anyone know a good approach to accomplish this? I can nandle writing the PowerShell scripts, I am just not sure what the best way to call them from a web interface would be. Any reference or information would be appreciated.

    hi igor
    i am actually working on a simillar project , i'm planning to publish it as an open source in codeplex
    the idea is that you have to know another programming language like VB , C# ... in my case i used ironpython
    ASP.NET , while ironpython calls powershells command using system.managment.automation through runspace
    iron python only handles the web interface stuff , like button click events , and handling output stuff from powershell
    you can convertto-html cmdlet from powershell it will make your life alot easier :)
    G

  • Calling powershell script from a batch file

    Hello All,
    I have a batch script that calls a powershell script. Before calling the script I set the execution policy to unrestricted, but when it gets to the line that calls the batch script i still get the confirmation in the command window: "Do you want to
    perform this operation" I then have to press Y for the PS script to run and then my batch script finishes.
    Does anyone know the setting I need to change in order to suppress the confirmation?
    Note: this is Windows 8, see code below
    set THIS_DIR=%~dp0
    powershell Set-ExecutionPolicy unrestricted
    powershell %THIS_DIR%MyScript.ps1 "param1"

    I may sound like a jerk but you really want to look at PowerShell.exe /?
    PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>]
        [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive]
        [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}]
        [-WindowStyle <style>] [-EncodedCommand <Base64EncodedCommand>]
        [-File <filePath> <args>] [-ExecutionPolicy <ExecutionPolicy>]
        [-Command { - | <script-block> [-args <arg-array>]
                      | <string> [<CommandParameters>] } ]
    PowerShell[.exe] -Help | -? | /?
    -PSConsoleFile
        Loads the specified Windows PowerShell console file. To create a console
        file, use Export-Console in Windows PowerShell.
    -Version
        Starts the specified version of Windows PowerShell.
        Enter a version number with the parameter, such as "-version 2.0".
    -NoLogo
        Hides the copyright banner at startup.
    -NoExit
        Does not exit after running startup commands.
    -Sta
        Starts the shell using a single-threaded apartment.
        Single-threaded apartment (STA) is the default.
    -Mta
        Start the shell using a multithreaded apartment.
    -NoProfile
        Does not load the Windows PowerShell profile.
    -NonInteractive
        Does not present an interactive prompt to the user.
    -InputFormat
        Describes the format of data sent to Windows PowerShell. Valid values are
        "Text" (text strings) or "XML" (serialized CLIXML format).
    -OutputFormat
        Determines how output from Windows PowerShell is formatted. Valid values
        are "Text" (text strings) or "XML" (serialized CLIXML format).
    -WindowStyle
        Sets the window style to Normal, Minimized, Maximized or Hidden.
    -EncodedCommand
        Accepts a base-64-encoded string version of a command. Use this parameter
        to submit commands to Windows PowerShell that require complex quotation
        marks or curly braces.
    -File
        Runs the specified script in the local scope ("dot-sourced"), so that the
        functions and variables that the script creates are available in the
        current session. Enter the script file path and any parameters.
        File must be the last parameter in the command, because all characters
        typed after the File parameter name are interpreted
        as the script file path followed by the script parameters.
    -ExecutionPolicy
        Sets the default execution policy for the current session and saves it
        in the $env:PSExecutionPolicyPreference environment variable.
        This parameter does not change the Windows PowerShell execution policy
        that is set in the registry.
    -Command
        Executes the specified commands (and any parameters) as though they were
        typed at the Windows PowerShell command prompt, and then exits, unless
        NoExit is specified. The value of Command can be "-", a string. or a
        script block.
        If the value of Command is "-", the command text is read from standard
        input.
        If the value of Command is a script block, the script block must be enclosed
        in braces ({}). You can specify a script block only when running PowerShell.exe
        in Windows PowerShell. The results of the script block are returned to the
        parent shell as deserialized XML objects, not live objects.
        If the value of Command is a string, Command must be the last parameter
        in the command , because any characters typed after the command are
        interpreted as the command arguments.
        To write a string that runs a Windows PowerShell command, use the format:
            "& {<command>}"
        where the quotation marks indicate a string and the invoke operator (&)
        causes the command to be executed.
    -Help, -?, /?
        Shows this message. If you are typing a PowerShell.exe command in Windows
        PowerShell, prepend the command parameters with a hyphen (-), not a forward
        slash (/). You can use either a hyphen or forward slash in Cmd.exe.
    Hope that helps! Jason

  • Executing powershell script from remote computer using RSAT

    Hi.
    I want to execute powershell script on AD server from remote computer (in the same domain). I installed and tested RSAT - it is working fine. But i cant execute PS from c# code.
    ps.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory");
    ps.Invoke();
    ps.Commands.AddCommand("Get-ADOrganizationalUnit -Filter 'Name -like \"*\"'");
    var res = ps.Invoke();
     And i get exception:
    An unhandled exception of type 'System.Management.Automation.CommandNotFoundException' occurred in System.Management.Automation.dll
    Additional information: The term 'Get-SBNamespace' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

    Hi
    CapitanPlanet
    For the
    CommandNotFoundException, it means the command cannot be found.
    On the other hand, your issue is about the PowerShell, if you still have the issue, I suggest that you should post it in the
    PowerShell forum for efficient response.
    Here are some useful information, please check
      Powershell
    commands from C# not working (System.Management.Automation.CommandNotFoundException)
    Powershell, Service Bus For Windows Server Programmatically: Command found, module could not be loaded
    https://msdn.microsoft.com/en-us/library/dn282152.aspx
    Best regards,
    Kristin
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Capturing log files from multiple .ps1 scripts called from within a .bat file

    I am trying to invoke multiple instances of a powershell script and capture individual log files from each of them. I can start the multiple instances by calling 'start powershell' several times, but am unable to capture logging. If I use 'call powershell'
    I can capture the log files, but the batch file won't continue until that current 'call powershell' has completed.
    ie.  within Test.bat
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > a.log 2>&1
    timeout /t 60
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > b.log 2>&1
    timeout /t 60
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > c.log 2>&1
    timeout /t 60
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > d.log 2>&1
    timeout /t 60
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > e.log 2>&1
    timeout /t 60
    start powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > f.log 2>&1
    the log files get created but are empty.  If I invoke 'call' instead of start I get the log data, but I need them to run in parallel, not sequentially.
    call powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > a.log 2>&1
    timeout /t 60
    call powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > b.log 2>&1
    timeout /t 60
    call powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > c.log 2>&1
    timeout /t 60
    call powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > d.log 2>&1
    timeout /t 60call powershell . \Automation.ps1 %1 %2 %3 %4 %5 %6 > e.log 2>&1
    Any suggestions of how to get this to work?

    Batch files are sequential by design (batch up a bunch of statements and execute them). Call doesn't run in a different process, so when you use it the batch file waits for it to exit. From CALL:
    Calls one batch program from another without stopping the parent batch program
    I was hoping for the documentation to say the batch file waits for CALL to return, but this is as close as it gets.
    Start(.exe), "Starts a separate window to run a specified program or command". The reason it runs in parallel is once it starts the target application start.exe ends and the batch file continues. It has no idea about the powershell.exe process
    that you kicked off. Because of this reason, you can't pipe the output.
    Update: I was wrong, you can totally redirect the output of what you run with start.exe.
    How about instead of running a batch file you run a PowerShell script? You can run script blocks or call individual scripts in parallel with the
    Start-Job cmdlet.
    You can monitor the jobs and when they complete, pipe them to
    Receive-Job to see their output. 
    For example:
    $sb = {
    Write-Output "Hello"
    Sleep -seconds 10
    Write-Output "Goodbye"
    Start-Job -Scriptblock $sb
    Start-Job -Scriptblock $sb
    Here's a script that runs the scriptblock $sb. The script block outputs the text "Hello", waits for 10 seconds, and then outputs the text "Goodbye"
    Then it starts two jobs (in this case I'm running the same script block)
    When you run this you receive this for output:
    PS> $sb = {
    >> Write-Output "Hello"
    >> Sleep -Seconds 10
    >> Write-Output "Goodbye"
    >> }
    >>
    PS> Start-Job -Scriptblock $sb
    Id Name State HasMoreData Location Command
    1 Job1 Running True localhost ...
    PS> Start-Job -Scriptblock $sb
    Id Name State HasMoreData Location Command
    3 Job3 Running True localhost ...
    PS>
    When you run Start-Job it will execute your script or scriptblock in a new process and continue to the next line in the script.
    You can see the jobs with
    Get-Job:
    PS> Get-Job
    Id Name State HasMoreData Location Command
    1 Job1 Running True localhost ...
    3 Job3 Running True localhost ...
    OK, that's great. But we need to know when the job's done. The Job's Status property will tell us this (we're looking for a status of "Completed"), we can build a loop and check:
    $Completed = $false
    while (!$Completed) {
    # get all the jobs that haven't yet completed
    $jobs = Get-Job | where {$_.State.ToString() -ne "Completed"} # if Get-Job doesn't return any jobs (i.e. they are all completed)
    if ($jobs -eq $null) {
    $Completed=$true
    } # otherwise update the screen
    else {
    Write-Output "Waiting for $($jobs.Count) jobs"
    sleep -s 1
    This will output something like this:
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    Waiting for 2 jobs
    When it's done, we can see the jobs have completed:
    PS> Get-Job
    Id Name State HasMoreData Location Command
    1 Job1 Completed True localhost ...
    3 Job3 Completed True localhost ...
    PS>
    Now at this point we could pipe the jobs to Receive-Job:
    PS> Get-Job | Receive-Job
    Hello
    Goodbye
    Hello
    Goodbye
    PS>
    But as you can see it's not obvious which script is which. In your real scripts you could include some identifiers to distinguish them.
    Another way would be to grab the output of each job one at a time:
    foreach ($job in $jobs) {
    $job | Receive-Job
    If you store the output in a variable or save to a log file with Out-File. The trick is matching up the jobs to the output. Something like this may work:
    $a_sb = {
    Write-Output "Hello A"
    Sleep -Seconds 10
    Write-Output "Goodbye A"
    $b_sb = {
    Write-Output "Hello B"
    Sleep -Seconds 5
    Write-Output "Goodbye B"
    $job = Start-Job -Scriptblock $a_sb
    $a_log = $job.Name
    $job = Start-Job -Scriptblock $b_sb
    $b_log = $job.Name
    $Completed = $false
    while (!$Completed) {
    $jobs = Get-Job | where {$_.State.ToString() -ne "Completed"}
    if ($jobs -eq $null) {
    $Completed=$true
    else {
    Write-Output "Waiting for $($jobs.Count) jobs"
    sleep -s 1
    Get-Job | where {$_.Name -eq $a_log} | Receive-Job | Out-File .\a.log
    Get-Job | where {$_.Name -eq $b_log} | Receive-Job | Out-File .\b.log
    If you check out the folder you'll see the log files, and they contain the script contents:
    PS> dir *.log
    Directory: C:\Users\jwarren
    Mode LastWriteTime Length Name
    -a--- 1/15/2014 7:53 PM 42 a.log
    -a--- 1/15/2014 7:53 PM 42 b.log
    PS> Get-Content .\a.log
    Hello A
    Goodbye A
    PS> Get-Content .\b.log
    Hello B
    Goodbye B
    PS>
    The trouble though is you won't get a log file until the job has completed. If you use your log files to monitor progress this may not be suitable.
    Jason Warren
    @jaspnwarren
    jasonwarren.ca
    habaneroconsulting.com/Insights

  • Execute powershell script from ssis?

    Hi,
    I was trying to use the execute process task to kick off a powershell script.  However, nothing happens when I run in debug (the component turns yellow and stays yellow).  Any idea if what I am trying to do is possible and the proper way to configure
    it?
    btw, I am using powershell for the remoting capabilites.  I need to execute a bat file on a remote server which runs a process in a legacy program. 
    Update:  When I name the ps1 script file in the executable window, it opens it in notepad.  This would be like the default if you double clicked the file.
    Mark

    To run a PowerShell Script from SSIS package. Add a "Execute Process Task" in SSIS and use the following command text.
    This works just great, plus the "-ExecutionPolicy ByPass" switch will take care of any server script policies.
    C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe
    -ExecutionPolicy ByPass -command ". 'L:\Powershell_Script\Script1.ps1' 'param1' 'param2'"
    Regards
    Deepak

  • How to run TestStand script on a remote system from a TestStand script?

    I would like to run a test stand script on a remote system from within another TestStand script. How can this be done?

    Hi EyaID,
    I believe you are looking for the Remote Sequence Call feature. Look at this last paragraph in this knowledge base and section 5-18 of the TestStand Reference Manual for more help:
    How can I Call an External Sequence with Parameters when the Sequence is Located on Another Computer...
    Regards,

Maybe you are looking for

  • When sync iPod, get error message and deletes all playlists!

    Just the other day a problem developed. When I sync my iPod (160G,) after a short time of syncing I get a pop-up which says, "Cannot sync "Dennis iPod" because an unknown error occurred. Error number 48" I clicked OK, and it seemed to sync anyway wit

  • Running Total Variation Query Time Optimization

    Hi all,  I've been struggling with this query for a while. I need to set a customer specific running total for 10 million rows (reset for every customer). But every time the number goes negative, I need to set it as zero. For example, member no      

  • How to display or suppress a field in the group footer conditionally

    Hi,      I am working with crystal report XI R2      My requirement is that suppress the filed on group footer if it is duplicating .Also display only once for the first record in  each page  if it runs in to more than one page . For example suppose

  • Convert Arbortext XML files to RoboHelp

    We are converting XML files from Arbortext to RoboHelp. Does anyone know how to conver the files? We would like to import or convert the files and remove the XML code Arbortext automatically adds to the files. Thanks! Sandy

  • Connectors other than JCo??

    Hi All, I am using Websphere base version. There is no Bussiness Intergration Adapter, so that i can connect to SAP JCo. My java application has to access SAP Bapi. <b>Is there any other solution for connecting to the SAP system, other than JCo?.</b>