• Как создать базу на сервере 1С с помощью командной строки?

    @pe4enushkin
    Небольшой скрипт на поше.
    $path1c = "c:\Program Files\1cv8\common\1cestart.exe"
    $arg1c = "CREATEINFOBASE Srvr=""{0}"";Ref=""{1}"";DBMS=""{2}"";DBSrvr=""{3}"";DB=""{1}"";DBUID=""{4}"";DBPwd=""{5}"";CrSQLDB=""Y"";SchJobDn=""N""; /AddInList {1} /Out create.log"
    
    $srvr = Read-Host "Введите значение для переменной Srvr"
    
    # Выбор типа ДБ
    $validDBMSOptions = @("PostgreSQL", "MySQL", "SQL Server")
    
    Write-Host "Выберите значение для переменной DBMS:"
    for ($i = 0; $i -lt $validDBMSOptions.Count; $i++) {
        Write-Host ("{0}. {1}" -f ($i + 1), $validDBMSOptions[$i])
    }
    
    while ($true) {
        $choice = Read-Host "Введите номер выбранного варианта (1-$($validDBMSOptions.Count))"
    
        if ([int]::TryParse($choice, [ref]$null) -and $choice -ge 1 -and $choice -le $validDBMSOptions.Count) {
            $bd_type = $validDBMSOptions[$choice - 1]
            break
        }
    
        Write-Host "Введено некорректное значение, попробуйте снова."
    }
    
    $db_srv = Read-Host "Укажите сервер субд"
    $bd_user = Read-Host "Пользователь субд"
    $bd_pass = Read-Host "Пароль субд"
    $refFile = Read-Host "Путь к текстовому файлу"
    
    Get-Content -Path $refFile | ForEach-Object {
        $ref = $_.Trim()  # удаление возможных пробелов в начале и конце строки значения
    
        $command = $arg1c -f $srvr, $ref, $bd_type, $db_srv, $bd_user, $bd_pass
        Start-Process $path1c $command
    
        Write-Host ("Информационная база с именем ""{0}"" успешно создана" -f $ref)
    }
    Ответ написан
    Комментировать