рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдирд╛рдо рдФрд░ рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдкреЛрдЯреАрди, рд░рд┐рдореЛрдЯ рдбреЗрд╕реНрдХрдЯреЙрдк рдпрд╛ рдЯреЗрд▓рдиреЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдИ рд╢реЙрд░реНрдЯрдХрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдЗрд╕реЗ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддреА рд╣реИ:

рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдСрдкрд░реЗрд╢рди рдпрд╛ рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдЖ рдЧрдИ рд╣реИ, рдпрд╛ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реМрдВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдкрддреЗ рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдкреА рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рд╢реЙрд░реНрдЯрдХрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ CSV рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИ, рдХреЙрд▓рдо "рдирд╛рдо", "рдкрддрд╛", "рд╡рд┐рд╡рд░рдг", "рдПрдХреНрд╕реЗрд╕" рдХреЛ рдвреВрдВрдврддреА рд╣реИ, рд╢реЙрд░реНрдЯрдХрдЯ рдмрдирд╛рддреА рд╣реИред рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб "рдПрдХреНрд╕реЗрд╕" (http, https, rdp, telnet) рдХреЗ рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рддрд░реНрдХ "рдПрдбреНрд░реЗрд╕" рдХреЗ рдорд╛рди рд╕реЗ рд╣реИрдВред рд╡реИрд╕реЗ, "рдкрддрд╛" рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореЗрдЬрдмрд╛рди рдХрд╛ рдирд╛рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред "рд╡рд┐рд╡рд░рдг" рдлрд╝реАрд▓реНрдб рд▓реЗрдмрд▓ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЖрдк рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╢реЙрд░реНрдЯрдирд╛рдо, рдПрдбреНрд░реЗрд╕, рдореЗрдердб рдФрд░ рдбреАрдПрд╕рд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреБрдЫ рд╣реИ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- source <source_file> : CSV рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде
- рдлрд╝реЛрд▓реНрдбрд░ <рдлрд╝реЛрд▓реНрдбрд░> : рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрде рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╢реЙрд░реНрдЯрдХрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
- noreplace : рдпрджрд┐ рд╢реЙрд░реНрдЯрдХрдЯ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓реЗ рдЧрдП рдереЗ рдФрд░ рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрди рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- namePolicy рдЫреЛрдЯрд╛ рдирд╛рдо | shortname_addr | addr_shortname | shortname_lastoct | shortname_last2octs : рд╢реЙрд░реНрдЯрдХрдЯ рдирд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ: рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╕реЗ "рдирд╛рдо" рдХреЙрд▓рдо рдХрд╛ рдореВрд▓реНрдп, "рдкрддрд╛" + "рдирд╛рдо" рдпрд╛ "рдирд╛рдо" рдХрд╛ рдорд╛рди "рдирд╛рдо" + "рдкрддрд╛" рдпрд╛ "рдирд╛рдо" рдХреЗ рдПрдХ рдпрд╛ рджреЛ рдЕрдВрддрд┐рдо рдУрдХрдЯреЗрдЯреНрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрддред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
PS C:\temp>.\create-shortcuts.ps1 -source MyNewFriends.csv -folder d:\job\new тАУnoreplace тАУnamePolicy shortname_addr
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЗрдЯрд╛ рдХреЛ рдореМрдЬреВрджрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ source.csv рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╢реЙрд░реНрдЯрдХрдЯ рднреА рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкреБрдЯреНрдЯреА рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреЗ рд░рд╛рд╕реНрддреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╕рднреА рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╡рд┐рдзрд┐ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mstsc рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рди рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐
/ v: <рдкрддреЗ> рдХреЗ рд░реВрдк рдореЗрдВ ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдЕрдиреНрдп рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
createShct рдлрд╝рдВрдХреНрд╢рди, рдЕрдиреБрднрд╛рдЧ
#Shortcut рдХрдорд╛рдВрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛
рд╣реЛрдЧрд╛ ред
рд╣рд╛рдВ, рдпрджрд┐ рдпрд╣ рдЖрдкрдХреА рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЕрд╡рд╢реНрдп рдЪрд▓реЗрдВ:
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 }