使用Powokehell远程安装Python失败,使用Invoke-Command

时间:2017-09-26 10:23:00

标签: windows powershell winapi automation invoke-command

我正在尝试使用此脚本在远程计算机上安装Python。如果我直接在服务器上运行此文件。这是Python_Pip_Proxy_PyWinAuto.ps1文件。它有效。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Write-Host("Hi")
$installer="C:\temp\python-3.6.2.exe"
& $installer /quiet PrependPath=1 InstallAllUsers=1 TargetDir="C:\Python36"

但是,如果我使用以下脚本运行Invoke-Command以在同一服务器上远程运行它,则会打印Hi消息,因此我知道该文件正在运行但是Python没有安装。

# Getting the list of servers from a .txt file to an array #

$SRVListFile = "C:\Scripts\ServerList.txt"
$SRVList = Get-Content $SRVListFile -ErrorAction SilentlyContinue

# Copying the .exe file from a shared location to each server in the array #
# Invoking the .ps1 file which runs natively on each server #

Foreach($computer in $SRVList) {

    Get-Service remoteregistry -ComputerName $computer | start-service
    Copy-item -Path "E:\Software\python-3.6.2.exe" -Destination \\$computer\c$\temp -Recurse
    Copy-item -Path "C:\My Files\Work\Episode 003 - MongoDB Back Up\Python_GUI.py" -Destination \\$computer\c$\temp -Recurse
    Invoke-Command -ComputerName $computer -FilePath "C:\My Files\Work\Episode 003 - MongoDB Back Up\Python_Pip_Proxy_PyWinAuto.ps1"
}

出了什么问题。我应该将代码更改为什么?

1 个答案:

答案 0 :(得分:1)

尝试使用$Scriptblock = { PowerShell -file "C:\My Files\Work\Episode 003 - MongoDB Back Up\Python_Pip_Proxy_PyWinAuto.ps1" "This is Working" | out-file "C:\Hi.txt" } Invoke-Command -ComputerName $computer -Scriptblock $Scriptblock 参数在远程计算机上的scriptblock括号内执行命令。

也许你可以像

那样做
Write-Host "Hi"

您可能希望删除out-file部分,因为这会使脚本具有交互性。如果要检查远程计算机上的执行情况,可以使用{{1}} cmdlet在远程计算机上创建文件作为指示。