我希望通过设置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
答案 0 :(得分:1)
由于您要运行的脚本似乎位于远程计算机上,因此您应该这样运行它:
$Session = New-PSSession -ComputerName $Computer
Copy-Item ...
Invoke-Command -Session $Session -Scriptblock {
Set-Location 'C:\temp'
& ./RunAV.ps1
}