Estou tentando escrever um arquivo em lotes que precisa executar alguns comandos usando uma conta de administrador local (iniciar / parar um serviço) e alguns comandos usando o usuário conectado (copiar arquivos do diretório do usuário) e estou encontrando problemas. Eu tentei os seguintes comandos:
runas com / savecred
runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""
Ao usar /savecred
, não é solicitada uma senha. Em vez disso, uma janela do prompt de comando pisca brevemente e desaparece. Não consigo dizer o que há nesta janela. O serviço não está parado.
runas sem / salvadas
runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""
Esses comandos solicitam uma senha, mas exibem o mesmo comportamento dos comandos acima - uma janela do prompt de comando é exibida rapidamente e o serviço não é parado.
Idealmente, gostaria de salvar a senha da sessão, pois precisarei executar mais comandos com os detalhes.
Isso é possível e, se sim, o que estou fazendo de errado?
fonte
runas /user:(PC name)\(username) /savecred "net stop \"(service name)\"" >> log.txt
nada será gerado no arquivo de log.LOGBATCH.BAT yourbatch.bat any_parameters_your_batch_needs
e ele criará um arquivo de log contendo todos os comandos / ações executadas poryourbatch.bat
Deixe-nos saber o que você vê lá.Respostas:
Você pode adicionar o seguinte ao seu script e ele forçará a execução elevada. Não há necessidade de baixar nada.
fonte
Requesting administrative privileges...
na tela até o tempo limite.divida seu arquivo em lotes em dois. A parte que você deseja executar como pasta admincmd no system32. A parte que você deseja executar no cmd normal cole-a na pasta regular e, a partir daqui, chame o segundo arquivo em lote que existe system32. Dessa forma, a segunda parte sempre é executada em admincmd. Eu tentei e funciona para mim.
fonte
Se você não se importa com software de terceiros, tente executar como senha runasspc. Ele salvará sua senha em um arquivo criptografado. A senha não precisa ser exposta no arquivo em lotes.
fonte
O comando "Runas" não "sudo" o seu comando.
Para fazer isso a partir de um arquivo em lotes, você precisa "elevar" os comandos que você está gerando. Faça o download dos scripts do Elevate Powertoy.
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
Inicie seus comandos como:
ou
fonte
runas /user:$PcName\$Username /savecred "elevate.cmd sc stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop $ServiceName"
e cada um deles retorna este erro: ERRO RUNAS: Não é possível executar - net stop elevate.cmd alfrescoTomcat -2147467259: Erro não especificadoO que eu uso é o seguinte código:
Coloque-o após o seu @echo e observações.
fonte
Resposta simplificada (além do user325534) se você só precisa começar a trabalhar em algum diretório com acesso evitado:
fonte
Esse código permite que o cmd solicite a senha do usuário. O usuário deve digitar sua senha e, em seguida,
executable.bat
ela será executada como administradormain.bat
executable.bat
fonte