1

ネットワーク上の複数のマシンに 1 つ (または複数) のリモート デスクトップ接続ファイルを作成するという、一見単純なタスクがあります。当社の従業員は毎日複数のサーバーのうちの 1 つに接続しており、新しい従業員を雇うたびに各 .RDP ファイルをセットアップするのは時間がかかる場合があります。そのため、powershell を使用して、各マシンで .RDP ファイルを作成することで、この操作を合理化しようとしています。(まだそこにない場合)

この人のチュートリアルとコードを使用して、自分のマシンで動作させました。コードを powershell で実行すると、マシンに必要な RDP 接続ファイルが作成されます。

ただし、現在、1台のマシン(できればメインサーバー)からこれを実行し、その個人のマシンで正しいユーザー名を使用して各.RDPファイルをセットアップできるようにする方法を見つけようとしています。

4

1 に答える 1

1

Powershell のアーキテクトは、リンクしたチュートリアルへの返信としてブログ投稿を書きました。以下のスクリプトは、彼の提案のいくつかに従い、ニーズについていくつかの仮定を立てています。

ユーザーの Joe、Sally、および Frank が、TS1、TS2、および TS3 の 3 つのサーバーに通常の rdp 接続を行うとします。Joe のワークステーションは CLTCOMP1、Sally のワークステーションは CLTCOMP2、Frank のワークステーションは 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
于 2012-12-25T01:35:23.327 に答える