2013-07-17 2 views
0

В настоящее время у меня есть пакетный файл, который позволяет мне создавать пул приложений и приложений в IIS. он работает, но он создает только один пул приложений и приложений.Создание X-номеров приложений и пулов приложений в iis с использованием пакетного скрипта

это мой текущий сценарий:

@echo ON 
setlocal enabledelayedexpansion 

REM "Content Source path" 
set arg1=%1 

REM "Content destination path" 
set arg2=%2 

REM "apps to setup" 
set arg3=%3 

REM Split virt names and loop through it. 
FOR /F "tokens=1* delims=," %%a in (%arg3%) do (

    set vir=%%a 
    set pool=!vir!!poolname! 

    REM CREATE APPLICATION 
    %systemroot%\system32\inetsrv\APPCMD add app /site.name:"Default Web Site" /path:/!vir! /physicalpath:"%arg2%" 

    REM CREATE APP POOL 
    %systemroot%\system32\inetsrv\appcmd add apppool /name:!pool! /managedPipelineMode:Integrated /processModel.identityType:ApplicationPoolIdentity /enable32BitAppOnWin64:false 

    REM ASSIGN APP POOL TO APPLICATION 
    %systemroot%\system32\inetsrv\appcmd set app /app.name:"Default Web Site/!vir!" /applicationPool:!pool! 

):END Endlocal 

install.bat "C: \ Источник" "C: \ мишень" "APP1, APP2, app3"

Пожалуйста, может кто-нибудь сказать мне, что я «Я делаю неправильно.

Спасибо.

ответ

2

попытаться назвать вашу партию:

install.bat "c:\source" "c:\target" APP1,APP2,APP3 

без двойных кавычек, окружающих APP...
и установить args в пакете:

set "arg3=%3,%4,%5" 
+0

, что тоже не сработало, был создан только APP1. – capiono

+0

Пожалуйста, взгляните на «Руководство IIS от Microsoft». :) – Endoro

2

Выпуск 1: :END ENDLOCAL не должен следовать закрывающей скобке в «для %% Ā` цикла. Это создает синтаксическую ошибку.

Вопрос 2: Если :END ENDLOCAL перемещен на следующую строку, endlocal недействителен. В отличие от Assembler, пакет не выполняет «инструкции», появляющиеся после метки.

выпуск 3: этикетка :END является излишней. Он не используется в партии.

Выпуск 4: endlocal является избыточным - конец файла закрывает любую локальную среду, работающую в том же контексте.

Вопрос 5: присвоение переменной с использованием %n (n числовых) ВКЛЮЧАЕТ прилагаемые кавычки в назначенное значение. Используйте утилиту %~n, чтобы избавиться от прилагаемых котировок.

выпуск 6: FOR/F предназначен для хранения файлов. Принимая во внимание, что он будет анализировать строку с кавычками, как если бы это была команда echo %string%, то есть только одна строка, и, следовательно, ваш код будет обрабатывать только одно (количество встречающихся «строк»), назначая первый , -сегментный токен до %%a и остаток до %%b (не используется)

Что вам нужно в этом случае гораздо проще -

FOR %%a in (%arg3%) do (

Выпуск 7: переменная poolname не установлена ​​в этом коде. Если он не назначен до того, как код будет выполнен, set pool=!vir!!poolname! установит pool на !vir!, что само по себе эквивалентно %%a. Учитывая аргументы, которые вы указали, и изменения, которые я указал, в вашем коде !pool!==!vir!==%%a

Смежные вопросы