2014-06-05 4 views
-1

Я пытаюсь запланировать еженедельную задачу, которая берет резервную копию некоторых важных данных (В конце концов, я хочу запустить сценарий PowerShell из диспетчера задач Windows). У этого провайдера уже есть пакетный скрипт (backup.bat). Я написал сценарий powershell, который вызывает этот пакетный скрипт. Но при вызове backupdb из powershell не удается сбросить сообщение об ошибке «Разрешение отказа».Выполнять пакетный скрипт как администратор изнутри powershell

Я попытался ниже, который не работал:

start-process $BackupCmd -verb runas -ArgumentList "$Flags `"$BackupFile`"" 

Посмотрев на несколько постов на SO и других форумах, я был в состоянии найти ответы для запуска Powershell скрипт внутри пакетного сценария как администратор а не наоборот.

how to run as admin powershell.ps1 file calling in batch file, Run a powershell script in batch file as administrator и How to run a PowerShell script from a batch file

EDIT 1:

1.I запустить командный сценарий и сценарий PowerShell в качестве того же пользователя.

2.I попытался поднять PowerShell с помощью «-verb runas», но не работал. Запуск сценария PowerShell из того же повышенного окна, что и пакетный скрипт.

3.Pasting скрипт PowerShell ниже:

$CurrentDate = get-date -format yyyyMMdd 
$BackupStartDate = (get-date).AddDays(-7).ToString("yyyyMMdd") 
$BackupDir = "<directory path>" 
$BackupFile = $BackupDir + "Backup-" + $BackupStartDate + "-to-" + $CurrentDate + ".txt" 
$BackupCmd = "C:\Progra~1\bin\backup" 
$Verbose = " -v " 
$ArchiveStart = " -S " + $BackupStartDate 
$Flags = $Verbose + $ArchiveStart 

# Both commands below do not work 
start-process $BackupCmd -verb runas -ArgumentList "$Flags `"$BackupFile`"" 
& $BackupCmd $Flags `"$BackupFile`" 

4.Error:

backup.bat : Error writing to the debug log! <type 'exceptions.IOError'> [Errno 13] 
Permission denied: 'C:\\Program Files\\tmp\\debug.log' 
(2014/06/05 12:42:01.07) [8764] --> Exception encountered. <Unable to load config file!> 
Error writing to the debug log! <type 'exceptions.IOError'> [Errno 13] Permission denied: 

Спасибо.

+0

Вы должны попробовать просто набрав во имя командного файла. Это потрясающе! – Cole9350

+0

Cole9350, я не понял ваш комментарий, но я попытался запустить пакетный скрипт из командной строки как администратор, и он работает. Сценарий не работает изнутри powershell. – Sarvavyapi

+0

'. \ Batchname.bat' или просто указать полный путь – Cole9350

ответ

1

У меня возникли проблемы с использованием start-process с -verb runas на пакетных скриптах.

Попробуйте использовать start-process на PowerShell вместо этого, передавая свой командный файл в качестве первого аргумента:

$CurrentDate = get-date -format yyyyMMdd 
$BackupStartDate = (get-date).AddDays(-7).ToString("yyyyMMdd") 
$BackupDir = "C:\" 
$BackupFile = $BackupDir + "Backup-" + $BackupStartDate + "-to-" + $CurrentDate + ".txt" 
$BackupCmd = "C:\Progra~1\bin\backup.bat" 
$Verbose = "-v" 
$ArchiveStart = "-S $BackupStartDate" 
$Flags = "$Verbose $ArchiveStart" 
$Args = "$BackupCmd $Flags `"$BackupFile`"" 

start-process powershell -verb runas -ArgumentList $Args 
+0

Спасибо. Но это не сработало. – Sarvavyapi

+0

Это работает для меня. Какие ошибки вы видите? Обратите внимание, что в коде, который вы указали, у вас есть '$ BackupDir =" <путь к каталогу> "', который не будет работать должным образом. Я не уверен, что вы изменили это специально для своего сообщения или нет. –

+0

Да, я изменил его специально для сообщения. Вот ошибка: Start-Process: набор параметров не может быть разрешен с использованием указанных именованных параметров. В Backup.ps1: 20 char: 1 + start-process -NoNewWindow powershell -Verb runas -ArgumentList $ Args + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument : (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId: AmbiguousParameterSet, Microsoft.PowerShell.Commands.StartProcessCommand – Sarvavyapi

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