リモートコントロールのショートカットスクリプト

デバイスとサービスの名前とアドレスを含むテーブルがあり、そこから多くのショートカットを簡単に取得して、ブラウザー、パテ、リモートデスクトップ、またはこれらのデバイスを管理するtelnetを起動できると想像してください。 以下の画像はこれを図式的に示しています



スプレッドシートの乾燥した線がどのように奇跡的なラベルになるかを示す美しい写真です。

なぜこれが必要なのでしょうか? たとえば、新しいシステムが運用や検査に使用されたり、使用のためにテスト環境が引き渡されたりします。 ホストに接続するたびにアドレスを駆動したり、ファイルからコピーしたりしないように、スクリプトを1回実行して、すべてのショートカットを一度に作成できます。



powershellスクリプトはCSVファイルを処理し、「name」、「address」、「description」、「access」の列を見つけ、ショートカットを作成します。 ショートカットのコマンドは、「access」の値(http、https、rdp、telnet)に基づいて形成され、引数は「address」の値から取得されます。 ちなみに、「アドレス」はIPアドレスではなく、ホスト名などです。 「説明」フィールドは、ラベルのコメントに分類されます。 ショートネーム、アドレス、メソッド、およびdescをフィールド名として使用することもできます。 (何かがあることは明らかだと思います)。 以下のパラメーターが受け入れられます。



たとえば、次のように:

PS C:\temp>.\create-shortcuts.ps1 -source MyNewFriends.csv -folder d:\job\new –noreplace –namePolicy shortname_addr
      
      





デフォルトでは、データは現在のディレクトリのsource.csvファイルから取得され、ショートカットも現在のディレクトリに作成されます。

puttyおよびInternet Explorerへのパスは、スクリプトの最初に設定されます。 もちろん、すべての接続方法で、他のプログラムを使用できます。 考慮すべき主なことは、パラメーターを渡す方法です。 たとえば、mstscでは、接続のホスト名はスペースだけでなく、 / v: <address>として渡されます

もちろん、他の接続方法を追加することもできます。 ここでは、すでにcreateShct関数のセクション#Shortcut commandを編集する必要があります。

はい、PowerShellスクリプトを初めて実行する場合は、必ず実行してください:

 PS C:\temp>set-executionpolicy -executionpolicy unrestricted -scope currentuser
      
      





スクリプトは次のとおりです。

 #################################################### # Remote access shortcuts creation script # v0.9 # # Defaults: # # * Create shortcuts in current directory # * Overwrite all shortcuts # * Shortcut name is "shortname" column value # * Shortcut comment is "desc" column value #################################################### #      #  0.9 # #  : # # *      # *    # *   –  "" # *   -  "" #################################################### # Arguments param ( [switch]$noreplace, # 'Do not overwrite shortcuts on creation' default is to overwrite $folder = '', # 'Target folder path' default is current dir $source = 'source.csv', # 'Source data file path' default $namePolicy = 'shortname' # 'Shortcut naming policy' default ) $csvPath = $source # Source data file path $shPath = $folder # Target folder path $shNoReplace = $noreplace # Do not overwrite shortcuts on creation $shHTTPcmd = '"C:\Program Files\Internet Explorer\iexplore.exe"' $shRDPcmd = 'mstsc.exe' $shSSHcmd = '"C:\Program Files\PuTTY\putty.exe"' $shTELNETcmd = 'telnet.exe' $shNamePolicy = $namepolicy # Shortcut naming policy function createShctFile($shText,$shCmd,$shArgs, $desc = '') { # creating shortcut file $shPathSh = "$shPath\$shText.lnk" if ( (test-path -path $shPathSh) -and $shNoReplace ) {return} $shct = $oshell.CreateShortcut($shPathSh) $shct.TargetPath = $shCmd $shct.Arguments = $shArgs $shct.Description = $desc $shct.Save() } function createShct($shortname,$desc='',$addr,$method) { # preparing shortcurt parameters # Shortcut name $shText = $shortname if (!$shortname) { write-host '(i) No shortcut name defined' return } switch ($shNamePolicy) { 'shortname' { $shText = $shortname } 'shortname_addr' { $shText = "$shortname $addr" } 'addr_shortname' { $shText = "$addr $shortname" } 'shortname_lastoct' { $octs = ($addr -split '\.') if ($octs[3]) {$shText += ' ' + $octs[3]} } 'shortname_last2octs' { $octs = ($addr -split '\.') if ($octs[3]) {$shText += ' ' + $octs[2]+ '.' + $octs[3]} } } #Shortcut command $shArgs = '' switch ($method) { 'http' { $shCmd = $shHTTPCmd $shArgs = "http://$addr" } 'https' { $shCmd = $shHTTPCmd $shArgs = "https://$addr" } 'rdp' { $shCmd = $shRDPCmd $shArgs = "/v:$addr" } 'ssh' { $shCmd = $shSSHcmd $shArgs = $addr } 'telnet' { $shCmd = $shTELNETcmd $shArgs = $addr } } createShctFile -shText $shText -shCmd $shCmd -shArgs $shArgs -desc $desc } ##### Main # Init $oshell = New-Object -comObject WScript.Shell $basePath = (get-location).path # Working dir [System.IO.Directory]::SetCurrentDirectory($basePath) # Set working dir to script working dir # Env check if (!(test-path -pathtype leaf -path $csvPath)) { # Cheking for source CSV path write-host "(!) Path to source CSV not found: $csvPath" exit } if (!($shPath)) {$shPath = $basePath } if (!(test-path -pathtype container -path $shPath)) { # Cheking for target folder path write-host "(!) Path for shortcuts not found: $shPath" exit } # Run $csv = get-content $csvPath | Convertfrom-CSV -UseCulture foreach ($str in $csv) { $shrt = $str.shortname if ($str.) {$shrt = $str.} $addr = $str.addr if ($str.) {$addr = $str.} $accs = $str.method if ($str.) {$accs = $str.} $desc = $str.desc if ($str.) {$desc = $str.} createShct -shortname $shrt -desc $desc -addr $addr -method $accs }
      
      






All Articles