КаК расшарить папку из скрипта Powershell

Если у вас Windows 8 или свежее, всё очень и очень просто. В этих ОС есть готовый модуль для PowerShell. Расшарить папку очень просто:

New-SmbShare -Name $sharename -Path $sharepath -ContinuouslyAvailable 0 –FullAccess Все

Где

  • $sharename — имя шары
  • $sharepath — путь к шаре
  • ContinuouslyAvailable — доступность после перезагрузки (0 — недоступны, 1 — доступны)
  • –FullAccess — полный доступ

В более ранних версиях, без небольших танцев с буном не обойтись. Необходимо использовать утилиту командной строки net share

В скрипте надо сформаровать переменную, содержащую имя и путь к шаре, вида

sharename=DISK:\\sharepath

например

$sharename = "mainshare"
$sharepath = $volumeletter + ":\main"
$sharecmd = $sharename+'='+$sharepath

И после этого, можно запустить net share

net share $sharecmd --% /GRANT:all,FULL

Что тут важно?

  1. «—%» — все переменные слева от этой последовательности powershell преобразует в значения до запуска команды
  2. Из powershell в командную строку плохо передаются русские символы, да и вообще, все национальные символы, по этому, если надо добавить доступ служебной группе «Все», самый простой способ выкрутиться:
    1. Создать группу All
    2. Сделать членом группы All, группу Все 🙂