0

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

 1.import infor from the csv file to define variables 
2.copy specefied file (then loop)
 3.launch mstsc.exe
 4.enter server IP, username, password
 5.paste copied file into the c:\ directory 
6.launch cmd.exe
 7.Run the file that was copied to the c:\ directory 
8.log off server 

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

对于我想要做的更具体的事情是将代理安装到机器上。该过程需要通过 rdp 登录到服务器,从命令行运行静默安装 (msi) 包,仅此而已。我想做的是向我的客户提供一个电子表格,让他填写详细信息,例如服务器地址、用户名和密码。然后转到 csv,运行 powershell,并通过该脚本安装许多代理,本质上是一个自动化过程。希望能更好地解释它。

这是我到目前为止...

视窗....

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt"
foreach ($computername in $computers) 
{
mstsc
Start-Sleep -s 2 
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}")

那只会启动 mstsc 会话,所以它只是一个难题,我需要做的就是将文件复制到该设备,然后运行 ​​cmd.exe 和一个命令并注销。

对于 UNIX>>>

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt"
foreach ($computername in $computers) 
{
c:\putty.exe
Start-Sleep -s 2
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}")
}

几乎相同的东西,但我可以直接从 putty 运行命令来完成这项工作,而不必复制文件,因为我可以通过运行一些命令以另一种方式获得它。

对此有任何帮助或想法,谢谢。

4

3 回答 3

0

来自 Putty 下载页面的 PSSession 和(可能)Plink.exe 的组合应该可以帮助您实现目标。

New-PSSession 和 Enter-PSSession cmdlet 将允许您对 Windows 目标使用远程 PowerShell 会话(假设 WinRM 已启用)。从那里你可以在你的目标上执行 PShell 命令。

$session - New-PSSession -computerName [targetName/ip] -Credential (get-credential)
$session | Enter-PSSession
{ Execute Silent install }
Exit-PSSession
$session | Disconnect-PSSession

或者你可以使用 Invoke-Command

Invoke-Command -ScriptBlock { install.exe /s } -computerName [target] -credential (Get-Credential)

对于 Linux 机器,您可以利用 PLink.exe 通过 SSH 运行远程脚本。不是我以前尝试过的东西,但它应该可以正常工作。

此链接可能会有所帮助:http ://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html

于 2014-05-30T17:42:01.593 回答
0

mstsc 将 $Computer 作为参数使用 mstsc -v $Computer 添加用户可以通过 cmdkey 完成,您可以保存远程计算机的凭据

于 2014-05-30T11:56:45.640 回答
0

我看起来像你选择了错误的方式。PowerShell 具有强大的远程功能,因此如果您的所有客户端都有 Windows 管理(包含在 Vista、7 和 8 中的默认软件包中),您可以尝试以下操作:

# Comma separated list:
$listRaw = @"
Computer,User,Password
computer1,"Domain\user1","passw1"
computer2,"Domain\user2","passw2 with spaces"
"@

# Parse CSV list
$list = $listRaw | ConvertFrom-CSV -Delimiter ','

# Iterate targets
foreach ($target in $list) {
    Write-Host "Connecting to $($target.Computer) as $($target.User)"

    # Creating credential from username and password
    $SecurePassword = $target.Password | ConvertTo-SecureString -AsPlainText -Force
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $target.User, $SecurePassword

    # Creating remote session to that computer
    # Using given credentials
    $session = New-PSSession -ComputerName $target.Computer -Credential $Credentials

    # Invoking actions on that remote session
    Invoke-Command -Session $session -ArgumentList $target.Computer -ScriptBlock {
        Param($computerName)

        # this code executes on remote computer
        "Hello from $computerName"
    }
}

如果它适用于您的环境,请告诉我们。

于 2013-03-04T07:49:00.783 回答