如何使用PowerShell脚本在远程计算机上运行另一个PowerShell脚本

时间:2019-07-25 08:28:39

标签: windows powershell

我希望通过设置PowerShell脚本来使网络上的所有计算机保持最新状态,以使Defender Anti-Virus定义保持最新,该脚本将自动从Microsoft网站下载它们。然后,脚本会将文本文件中的.exe文件从我的计算机传输到所有计算机。

我现在想要做的是在远程计算机上运行.exe,但是我无法以某种方式使它运行。下面是我的代码。

$File = "https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64"
$Location = "C:\temp\mpam-fe.exe"
$Client = New-Object System.Net.WebClient
$Client.DownloadFile($File, $Location)

Write-Host "Downloading file..."

$Computers = Get-Content "C:\temp\Computers.txt"

foreach ($Computer in $Computers) {
    $Session = New-PSSession -ComputerName $Computer
    Copy-Item -Path C:\temp\mpam-fe.exe C:\temp\ -ToSession $Session -Recurse -Force
    Write-Host "Transferring file to $Computer"
    Enter-PSSession $Computer
    Set-Location "C:\temp\"
    Invoke-Command ./RunAV.ps1
    Exit-PSSession
}

当我尝试在远程计算机上运行脚本时收到的错误消息

Invoke-Command : Parameter set cannot be resolved using the specified named
parameters.
At C:\PSScripts\AVDownload.ps1:16 char:9
+         Invoke-Command ./RunAV.ps1
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand

1 个答案:

答案 0 :(得分:1)

由于您要运行的脚本似乎位于远程计算机上,因此您应该这样运行它:

$Session = New-PSSession -ComputerName $Computer
Copy-Item ...
Invoke-Command -Session $Session -Scriptblock {
    Set-Location 'C:\temp'
    & ./RunAV.ps1
}