2017-08-25 96 views
0

我想输入列表中的每台计算机并从中删除一个软件。Enter-PSSession不返回变量

当我尝试代码(不使用foreach)时,代码工作正常。但是当我尝试循环它时,它根本不起作用。

哪里有“做点什么”,它什么都不做。举例来说,我试图做的:

$product = Get-WmiObject -Class Win32_Product | Where-Object {$_.name -like "7-zip*"} 

,并在下一行,在屏幕上打印的$product变量。但它总是空的。

当我手动输入pssession并运行此命令时,它返回给我一些东西。

我在做什么错在这里?我已经浪费了几个小时试图弄清楚这一点,但没有运气:(

foreach ($computer in $computers){ 

    if(Test-Connection "$computer" -Count 1 -ErrorAction SilentlyContinue){ 

     Enter-PSSession -ComputerName $computer 

     "do something" 

     Exit-PSSession 

    }else{ 

     Write-Warning "computer is offline." 

    } 
} 
+2

https://stackoverflow.com/questions/3705321/enter-pssession -s-not-working-in-my-powershell-script-Enter-PSSession不能用于脚本中,仅用于交互式使用 – Raziel

回答

1

使用调用命令 例:

$ReturnValue = Invoke-Command -ComputerName $ComputerName -ScriptBlock{ 
    #DoSomethingHere 
} 
Write-host $Returnvalue #Will print the output of the scriptblock 
+0

啊,这太棒了!它现在可以工作!非常感谢! – mergulhao21