A entrada do usuário do arquivo em lote não está sendo resolvida no comando

0

Para encurtar a história, preciso mapear uma série de pastas do WebDav que, por qualquer motivo, em momentos diferentes, exigem tentativas repetidas de autenticação para fazer isso com êxito.

Eu criei o seguinte script para facilitar as coisas, para que eu não precise copiar e colar o comando net use para o primeiro compartilhamento 15 vezes e depois esperar que, pela 15ª vez, ele possa se conectar com êxito .

O que estou tentando fazer é tentar um mapa "regular" na primeira vez. Se isso não funcionar (o que saberemos porque verificará se uma pasta nesse local "existe", o que deve acontecer se a unidade for mapeada com êxito), ela solicitará novamente as credenciais, caso eu tenha digitado incorretamente a senha ( embora isso seja raro). Idealmente, gostaria de poder ignorar a senha quando ela for digitada, pois agora ela aparece como texto simples.

Então, usando a senha, que eu armazenei na variável "pword", eu tenho um loop que tenta mapear o local várias vezes usando a senha armazenada na variável até que ela possa se conectar com sucesso.

Eu percebo que eu poderia simplesmente colocar a senha no script . Isso está em um local público, então eu realmente nem queria o nome de usuário no script para começar. Não consigo colocar a senha no script. No momento, ele solicita a senha da conta, pois uma não é fornecida. A senha vai após o nome de usuário e antes da opção / P: no, o que garante que a unidade não persista após a sessão.

Atualmente, isso não está funcionando (não é surpresa). Eu não consigo descobrir o porquê. Meu script está em loop, mas eu continuo recebendo System error 1244 has occurred. The operation being requested was not performed because the user has not been authenticated. Então, de alguma forma, a senha que eu manualmente envio para a variável interativamente não está sendo passada para o net use switch como deveria. Eu recebo o erro 1244 se eu digitar a senha correta no prompt ou não, então, de alguma forma, ele não está tentando se conectar com as credenciais fornecidas manualmente através da variável.

Como posso consertar isso para que a entrada do usuário seja *** (marcada com estrela) (já que está solicitando uma senha, embora o cmd.exe não saiba disso) e, mais importante, posso forçar a conexão inserindo minha senha UMA VEZ (bem, duas vezes) e, em seguida, ter o meu arquivo de lote automaticamente sub que em para a senha em vez de solicitar todos os tempos. Isso fica irritante, fazendo isso 15 vezes toda vez que eu fizer logon. Há algo de errado aqui ou uma maneira melhor de fazer isso?

net use k: "https://d.docs.live.net/###/Documents/somefolder" /USER:[email protected] /P:No
if exist "K:\x" GOTO ContinueMapping
echo Windows will try to connect using the following password:
set /p pword=WebDav password:
:BruteConnect
net use k: "https://d.docs.live.net/$$$/Documents/somefolder" /USER:[email protected] %pword% /P:No
if exist "K:\x" GOTO ContinueMapping
GOTO BruteConnect
:ContinueMapping
(More drives get mapped here, and they all map successfully once the first drive gets mapped)
    
por InterLinked 05.09.2017 / 22:44

1 resposta

0

Seu script não está realmente criando a conexão de rede.

Existe uma lacuna no tempo antes de a conexão se tornar ativa. As credenciais são armazenadas no seu gerenciador de credenciais, mas a conexão com esse tipo de localização se torna ativa quando você consulta o acesso a ela.

O erro de acesso negado: 5 vem do fato de que você não está executando o script como administrador e que é necessário para executar um comando de uso de rede.

Seria exatamente o mesmo para inserir esse endereço na janela do explorador, pressionar enter, aguardar de 10 a 20 segundos antes que a conexão seja estabelecida e, em seguida, a unidade K também funcionará espontaneamente.

Se você solicitasse uma senha, seu script continuaria a falhar, a menos que você o executasse como administrador, mas a primeira versão do seu script já funcionaria.

Observe que, quando você usa esse método, o script fica paralisado por 10 a 20 segundos quando tenta criar a conexão antes de obtê-la.

Então, em teoria, você poderia simplesmente chamar o script normalmente como você já faz, esperar de 10 a 20 segundos e ele começará a funcionar magicamente.

Este é um problema conhecido ao acessar compartilhamentos como os do Office365 / Sharepoint / etc. A Microsoft substituiu isso pelo OneDrive devido à frequência com que tem problemas de conexão como esses.

    
por 05.09.2017 / 22:56