首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershell运行mstsc.exe

使用powershell运行mstsc.exe
EN

Stack Overflow用户
提问于 2012-06-21 09:12:56
回答 3查看 6.1K关注 0票数 0

我要做的事情看起来相当简单,但我想不出来。我希望运行Powershell脚本来启动RDP会话,将一个文件复制到c:\目录,然后从命令行运行该文件。我希望它循环,从csv文件中获取参数,如服务器IP、用户名和密码。所以从本质上讲,这些步骤如下…

代码语言:javascript
复制
 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,并通过该脚本安装许多代理,这在本质上是一个自动化的过程。希望这能更好地解释这一点。

这是我到目前为止所做的。

Windows....

代码语言:javascript
复制
$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>>>

代码语言:javascript
复制
$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运行命令来使其工作,而不必复制文件,因为我可以通过运行几个命令以另一种方式获得它。

任何对此的帮助或想法都将受到欢迎,谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-03-04 15:49:01

我看你选错路了。PowerShell有很好的远程功能,所以如果你所有的客户端都有Windows Management (它包含在Vista,Seven和Eight的默认软件包中),你可以试着做以下事情:

代码语言:javascript
复制
# 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"
    }
}

请让我们知道,如果它在您的环境中工作。

票数 0
EN

Stack Overflow用户

发布于 2014-05-30 19:56:46

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

票数 0
EN

Stack Overflow用户

发布于 2014-05-31 01:42:02

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

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

代码语言:javascript
复制
$session - New-PSSession -computerName [targetName/ip] -Credential (get-credential)
$session | Enter-PSSession
{ Execute Silent install }
Exit-PSSession
$session | Disconnect-PSSession

或者您可以使用Invoke-Command

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11130336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档