0

我想要做的似乎很简单,但我无法弄清楚。我正在寻找运行 Powershell 脚本来启动 RDP 会话,将文件复制到 c:\ 目录,然后从命令行运行该文件。我希望它循环,从 csv 文件中获取参数,例如服务器 IP、用户名和密码。所以本质上,步骤如下......

  1. 从 csv 文件导入 infor 以定义变量
  2. 复制指定的文件(然后循环)
  3. 启动 mstsc.exe
  4. 输入服务器IP、用户名、密码
  5. 将复制的文件粘贴到 c:\ 目录
  6. 启动 cmd.exe
  7. 运行复制到 c:\ 目录的文件
  8. 注销服务器

我想看看是否有人可以帮助我解决这个问题。我是 power shell 的新手,并且已经能够完成很多工作。如果有人能指出我正确的方向,或者甚至提供我填补空白的代码,我将不胜感激。

4

2 回答 2

1

我已经使用 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"

}
于 2018-08-17T17:17:08.547 回答
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 命令来复制文件并运行它们。

于 2012-06-20T14:20:47.197 回答