Encapsulate the output of invoke command in a variable - PowerShell

13,401

Generally for powershell to return something from a command\function, you want to produce any kind of output. So just "bla-bla" inside your code will return "bla-bla" to the caller. With that your case simplified:

$res = Invoke-Command -ComputerName "testpc.eil.local" -ScriptBlock {
    (Get-WindowsFeature -Name "Remote-Desktop-Services").Installed
}

do something with $res here
Share:
13,401
Kahn Kah
Author by

Kahn Kah

I'm the reason why stupid questions exist

Updated on June 05, 2022

Comments

  • Kahn Kah
    Kahn Kah almost 2 years

    I have a script that installs Remote Desktop Services on remote machines (from the DC).

    I'm now at the phase where I check if RDS installed on the connection broker (server) and connection host (server).

    I want to use invoke-command since a remote powershell session seemed too complicated.

    This is the code I have:

    $res = Invoke-Command -ComputerName "testpc.eil.local" -ScriptBlock {
    if((Get-WindowsFeature -Name "Remote-Desktop-Services").Installed -eq 1)
    {
       #i need this output (true or false or a string)
    }
    else
    {
         #i need this output (true or false or a string)
    }
    }
    
    
    Write-Host $res
    

    But my question is, how do I encapsulate the output of the scriptblock in the invoke-command in a variable that the DC can access? I'm trying to write away if RDS is succesfully installed or failed to a log-file

    How do we encapsulate the output of the function and pass it to the machine who's running it?

    Thanks