Você pode passar comandos para uma VM do servidor host?

0

Eu escrevi um arquivo em lote para definir o endereço IP de um servidor host e as duas máquinas virtuais em execução nele. No momento, você tem que copiar o script em cada máquina e executá-lo, o que não é o que eu quero, gostaria de executar o script no servidor host e ter os comandos passados para cada VM.

Isso é possível?

    
por Daniel Neocleous 23.10.2015 / 12:37

1 resposta

0

Você pode realizar isso facilmente com o uso de sessões do PowerShell.

Primeiramente, habilite o Remoting do PowerShell. Para fazer isso, abra o PowerShell como administrador e execute enable-psremoting -force .

Qualquer coisa que você declarar localmente pode ser passada para uma sessão usando uma sintaxe semelhante à seguinte:

$a = 1
$b = 2
New-PSSession -ComputerName MyRemoteMachineName | Out-Null
Invoke-Command -Session (Get-PSSession) -ArgumentList($a, $b) -ScriptBlock {
    $args[0]
    $args[1]
}
Get-PSSession | Remove-PSSession

Aodeclararvariáveisepassá-lasparaoscomandosdasessão"Lista de Argumentos", elas são passadas para a sessão remota em ordem. Nesse caso: ArgumentList($a, $b) torna-se $args[0] & %código%. Uma terceira variável poderia se tornar $args[1] (e assim por diante).

recuperar de uma sessão é igualmente simples - com o seguinte:

$myString = "Something"
New-PSSession -ComputerName MyRemoteComputerName | Out-Null
$outputFromSession = Invoke-Command -Session (Get-PSSession) -ArgumentList($myString) -ScriptBlock {
    $args[0] + " " +  $env:COMPUTERNAME
}
$outputFromSession
Get-PSSession | Remove-PSSession

Atribuindo a variável $ags[2] para capturar qualquer coisa retornada - isso é passado de volta da sessão remota para a local e pode ser usado mais tarde e em outro lugar, se necessário.

Fácil assim:)

Ben

    
por 21.07.2017 / 10:26