2012-12-24 62 views
1

网络多RDPS我有一个看似简单的任务来完成 - 创建一个(或多个)网络上的多台计算机上远程桌面连接文件。我们的员工连接到几个服务器中的一个日常的基础上,并设置每次我们聘请新员工可以成为耗时时间要在每个.rdp文件。所以我想通过让PowerShell去为每台机器创建.RDP文件来简化这个操作。 (如果它尚不存在)创建使用PowerShell

我用这个person's教程和代码得到它在我的机器上工作。我在PowerShell中运行代码,并在我的机器上创建了我想要的RDP连接文件。

但是,现在我想弄清楚如何拥有它,所以我可以从一台机器(最好是主服务器)执行此操作,并在每台机器上使用正确的用户名设置每个.RDP文件。

回答

1

PowerShell的建筑师回答您链接教程写了blog post。下面的脚本遵循他的一些建议,并对您的需求做出了一些假设。

比方说,用户乔,莎莉,和弗兰克将为3台服务器,TS1,TS2以及TS3常规RDP连接。乔的工作站叫做CLTCOMP1,莎莉的是CLTCOMP2,弗兰克是CLTCOMP3。该脚本假设用户登录到服务器和工作站与他们的域帐户,并创建输出文件名为targetServer-username.rdp,然后将它们复制到每个工作站用户的文档文件夹。 Copy假定客户端工作站运行Vista或更高版本,并且您可以以UNC路径的形式查看并写入该目标。为XP客户端调整$ destPath会很简单。从您的教程中,为了简单起见,我省略了关于屏幕分辨率和子文件夹的逻辑。如果需要的话,该逻辑可能可以在没有太多麻烦的情况下重新加入。

从rdpList.csv脚本导入的内容是这样的:

USERNAME,COMP 
joe,CLTCOMP1 
sally,CLTCOMP2 
frank,CLTCOMP3 

这里的脚本:

$targetServers = "TS1","TS2","TS3" 
$resWidth = 1024 
$resHgt = 768 
$domain = "DOMAIN" 
##################### 

$hereString = @" 

audiomode:i:2 
authentication level:i:0 
autoreconnection enabled:i:1 
bitmapcachepersistenable:i:1 
compression:i:1 
disable cursor setting:i:0 
disable full window drag:i:1 
disable menu anims:i:1 
disable themes:i:1 
disable wallpaper:i:1 
displayconnectionbar:i:1 
keyboardhook:i:2 
redirectclipboard:i:1 
redirectcomports:i:0 
redirectdrives:i:0 
redirectprinters:i:0 
redirectsmartcards:i:0 
session bpp:i:16 
prompt for credentials:i:0 
promptcredentialonce:i:1 
"@ 

$list = import-csv rdpList.csv 
forEach ($ts in $targetServers) { 
forEach ($item in $list) { 
    $out = @() 
    $out += "full address:s:" + $ts 
    $out += "screen mode id:i:1" 
    $out += "desktopwidth:i:" + $resWidth 
    $out += "desktopheight:i:" + $resHgt 
    $out += "username:s:" + $domain + "\" + $item.username 
    $out += $hereString 
    $outFileName = ".\" + $ts + "-" + $item.username + ".rdp" 
    $out | out-file $outFileName 
    $destPath = "\\" + $item.comp + "\c$\users\" + $item.username + "\documents\" 
    copy-item $outFileName $destPath 
} #closes foreach item 
} #closes foreach ts