我要做的事情看起来相当简单,但我想不出来。我希望运行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,并通过该脚本安装许多代理,这在本质上是一个自动化的过程。希望这能更好地解释这一点。
这是我到目前为止所做的。
Windows....
$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运行命令来使其工作,而不必复制文件,因为我可以通过运行几个命令以另一种方式获得它。
任何对此的帮助或想法都将受到欢迎,谢谢。
发布于 2013-03-04 15:49:01
我看你选错路了。PowerShell有很好的远程功能,所以如果你所有的客户端都有Windows Management (它包含在Vista,Seven和Eight的默认软件包中),你可以试着做以下事情:
# 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"
}
}请让我们知道,如果它在您的环境中工作。
发布于 2014-05-30 19:56:46
mstsc将$Computer作为参数使用mstsc -v $Computer可以通过cmdkey添加用户,并且可以保存远程计算机的凭据
发布于 2014-05-31 01:42:02
从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
https://stackoverflow.com/questions/11130336
复制相似问题