Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell在网络上创建多个RDP_Powershell_Rdp - Fatal编程技术网

使用Powershell在网络上创建多个RDP

使用Powershell在网络上创建多个RDP,powershell,rdp,Powershell,Rdp,我有一个看似简单的任务要完成——在网络上的多台机器上创建一个(或多个)远程桌面连接文件。我们的员工每天都会连接到多个服务器中的一个,并且每次雇佣新员工时都会设置每个.RDP文件,这可能会非常耗时。因此,我试图通过让powershell在每台机器上为我创建.RDP文件来简化此操作。(如果还没有) 我用这个教程和代码让它在我的机器上工作。我在powershell中运行代码,它会在我的机器上创建我想要的RDP连接文件 但是,现在我正试图弄清楚如何使用它,以便可以从一台机器(最好是主服务器)上执行此操作

我有一个看似简单的任务要完成——在网络上的多台机器上创建一个(或多个)远程桌面连接文件。我们的员工每天都会连接到多个服务器中的一个,并且每次雇佣新员工时都会设置每个.RDP文件,这可能会非常耗时。因此,我试图通过让powershell在每台机器上为我创建.RDP文件来简化此操作。(如果还没有)

我用这个教程和代码让它在我的机器上工作。我在powershell中运行代码,它会在我的机器上创建我想要的RDP连接文件


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

Powershell的架构师在回复您链接的教程时写了一篇文章。下面的脚本遵循了他的一些建议,并对您的需求做出了一些假设

假设用户Joe、Sally和Frank将定期与TS1、TS2和TS3三台服务器进行rdp连接。乔的工作站叫CLTCOMP1,莎莉的是CLTCOMP2,弗兰克的是CLTCOMP3。该脚本假定用户使用其域帐户登录到服务器和工作站,并创建名为targetServer-username.rdp的输出文件,然后将其复制到每个工作站上的用户文档文件夹中。该副本假定客户端工作站运行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

Powershell的架构师在回复您链接的教程时写了一篇文章。下面的脚本遵循了他的一些建议,并对您的需求做出了一些假设

假设用户Joe、Sally和Frank将定期与TS1、TS2和TS3三台服务器进行rdp连接。乔的工作站叫CLTCOMP1,莎莉的是CLTCOMP2,弗兰克的是CLTCOMP3。该脚本假定用户使用其域帐户登录到服务器和工作站,并创建名为targetServer-username.rdp的输出文件,然后将其复制到每个工作站上的用户文档文件夹中。该副本假定客户端工作站运行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