Powershell RDP会话和CLI脚本

时间:2012-06-20 14:05:52

标签: loops powershell cmd rdp mstsc

我期待做的事情似乎相当简单,但我无法弄明白。我希望运行Powershell脚本来启动RDP会话,将文件复制到c:\目录,然后从命令行运行该文件。我希望它循环,获取csv文件的参数,例如服务器IP,用户名和密码。所以本质上步骤如下......

  1. 从csv文件导入infor以定义变量
  2. 复制specefied文件 (然后循环)
  3. 启动mstsc.exe
  4. 输入服务器IP,用户名,密码
  5. 将复制的文件粘贴到c:\目录
  6. 启动cmd.exe
  7. 运行复制到c:\ directory
  8. 的文件
  9. 注销服务器
  10. 我想知道是否有人可以帮我解决这个问题。我是Power Shell的新手,并且已经能够完成很多工作。如果有人能指出我正确的方向,或者甚至提供填写空白的代码,我会非常感激。

2 个答案:

答案 0 :(得分:0)

我建议您使用此命令,因为我并不完全符合您的要求。

Get-help Import-CSV
get-help about_remoting这将避免为您执行mstsc.exe操作。

针对此会话进入会话和Invoke-Command,您可以在该服务器上运行命令。 $ session = New-PSSession -ComputerName Server1 -Credentials Get-Credential
Invoke-Command -Session $ session -ScriptBlock {

}

在Script块中,指定powershell命令来复制文件并运行它们。

答案 1 :(得分:0)

我已经使用psexec完成了远程安装。 psexec \\servername -u domain\usernamr -p password cmd /c "msiexec /i program.msi

PSexec下载:https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

这意味着您将使用psexec而不是RDP来远程运行安装。

我创建了一个小的PowerShell脚本来帮助您入门。因此,假设您的CSV文件(c:\ info.csv)具有三列ServerName,UserName和Password。

运行下面的代码,它应该可以工作,但是请确保根据您的环境更改前4行。首先放置一台服务器来观察脚本行为。

# Set intial variables
$CSVFile = "c:\info.csv"
$MSI = "\\servername\sharename\setup.msi"
$MSILog = "c:\Windows\temp\setup.log"
$Domain = "YourDomain"

# Import info from CSV file
$Servers = import-csv $CSVFile


# loop through each server
foreach ($server in $servers) {
         # run psexec on each server to install a program
         psexec \\$server.servername -u $Domain\$server.username -p $server.password -h cmd /c "msiexec /i $MSI /quite /l*v $MSILog"

}