2015-07-04 5 views
2

Я пытаюсь автоматизировать простую, но повторяющуюся задачу для неграмотного друга. Я телевизионный редактор, но у меня есть простые знания об этом, поэтому я ценю ваши навыки и знания.Простой сценарий PowerShell, чтобы сделать каталог доступным для всех с разрешениями и отобразить его как общий сетевой диск.

На компьютере с Windows, с PowerShell доступны, я хотел бы сценарий (я действительно как GUI, но что бы мечтающего), к

  1. Создайте новый каталог в специальный жесткий закодировано место - проверка, что ни одна из существующих каталогов с тем же именем не существует, и т.д.

  2. новый каталог делятся с разрешением все, полный доступ на чтение/запись

  3. новый каталог сопоставлен, как стойкие со следующим доступный driv букву, пропускающие буквы оптических носителей/считывателей карт.

NB: Как уже упоминалось, сетевой ресурс должен быть постоянным после перезагрузки.

Исследования показывают на 1 (но нуждается в большем количестве, чтобы проверить наличие дубликатов и т.д.):

# PowerShell creates a folder 
$Location = "X:\Clients\" 
New-Item -Path $Location -Name "My_New_Folder" -ItemType "directory" 
#Invoke-Item $Location 

Исследования показывают на 2: ? Нет идеи, где начать

исследований не предполагает для 3:

@echo off 
setlocal 

call :freedrive mydriveletter && goto :cont 
echo ERROR: No free drive letter found. 
goto :exit 
:cont 
echo Found drive letter: %mydriveletter% 

goto :exit 

rem Finds a free drive letter. 
rem 
rem Parameters: 
rem  %1 = Output variable name. 
rem 
rem Example: 
rem  call :freedrive mydriveletter && goto :cont 
rem  echo ERROR: No free drive letter found. 
rem  goto :EOF 
rem  :cont 
rem  echo Found drive letter: %mydriveletter% 
:freedrive 
setlocal EnableDelayedExpansion 
set exitcode=0 
set "output_var=%~1" 
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
    set "drive=%%i:" 
    rem If 'subst' fails, the drive letter is already in use. 
    rem This way we can even detect optical drives that have a drive 
    rem letter but no media in them, a case that goes undetected when 
    rem using 'if exist'. 
    subst !drive! %SystemDrive%\ >nul 
    if !errorlevel! == 0 (
     subst !drive! /d >nul 
     goto :freedrive0 
    ) 
) 
set exitcode=1 
set drive= 
:freedrive0 
endlocal & set "%output_var%=%drive%" & exit /b %exitcode% 

:exit 
pause 
+0

Только что замечено для 3 Я предложил «подставку», но я бы предпочел «использование сети», для постоянной после перезагрузки, если кто-либо не может сообщить об этом иначе. Благодарю. – Ogriff

ответ

0

Так что я думаю, что я решил свою собственную проблему, синтаксис/грамматика запутанным для новичка, чтобы передать переменные вместе .. .

# create a folder with user input 
$folder = Read-Host 'Name a new directory to be created in the Clients folder' 
$Location = "C:\Clients\" 
New-Item -Path $Location -Name "$folder" -ItemType "directory" 
# set permission 
icacls "$Location$folder" /grant everyone:F 
# share folder 
net share $folder="$Location$folder" /GRANT:EVERYONE`,FULL 
# map folder as drive 
net use * /persistent:yes \\localhost\$folder 
0
  1. Это ненужно. Просто создайте папку, если она уже существует, она потерпит неудачу.

    Используйте MD aka mkdir команда в партии.

    md c:\somepath\somefolder 
    

    Это быстрее, так как есть только один доступ к диску и использует меньше системных ресурсов.

  2. У вас есть права на файлы/папки и разрешение на использование.

    icacls c:\somepath\somefolder /grant everyone:F 
    
    net share sharename=c:\somefolder /grant:everyone,FULL 
    
  3. Чтобы отобразить диск

    Но я озадачен - что хорошего отображенный диск делать пользователю?

    net use * \\server\share\folder /persistant:yes 
    

И, конечно же, mkdir /?icacls /?, net help share, net help use,

+0

Было бы здорово иметь сценарий, в котором «новое имя папки идет здесь» отредактировано, а затем бег заботится обо всем остальном. Причиной для общей папки является установка его с буквой диска, чтобы система редактирования видео моего друга получала сдержанный объем на одно задание. Программное обеспечение только сохраняет носители в своем собственном месте на каждом томе, поэтому это аккуратный способ сохранить порядок вещей. Привод для каждого проекта. Благодарю. – Ogriff

+0

Могло ли быть рассмотрено выше, чтобы сценарий взял имя нового каталога и затем автоматически передал его через оставшиеся этапы? Это вне меня, но я вижу логику того, как это возможно. – Ogriff

+0

'set newfolder = c: \ somefolder' или даже' set/p newfolder = c: \ somefolder', затем использовать - 'mkdir% newfolder%' см. 'Set /?', И вы также можете ввести 'help' и посмотреть список большинства команд. – user5071892