Eu tenho um trabalho SQL que é executado via SQL Server Agent (executando o SQL Server 2012 Enterprise). A última etapa do trabalho é executar um aplicativo localizado em um compartilhamento de rede. Infelizmente não sei o nome da pasta em que o aplicativo está (a pasta é o número da versão), então estou usando o PowerShell para encontrá-lo:
set-location "\\server\companydocuments\MyApp\Application Files\"
$name = Get-ChildItem | sort name -desc | select -f 1 | select name
cd $name.name
& ".\Application.exe"
Se eu abrir uma janela do PowerShell no SQL Server, ela funcionará bem. Quando executo isso no SQL Server Agent, recebo o seguinte erro:
A job step received an error at line 1 in a PowerShell script.
The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'"
Eu pensei que poderia ser um problema de permissão, então tentei o SQL Server Agent executando sob minhas credenciais (é um servidor de teste, não produção), mas ainda assim recebo o mesmo erro. Eu também tentei mapear uma unidade de rede para a pasta compartilhada em vez de caminhos UNC, mas o mesmo erro.
Alguém pode sugerir como me conectar a esta pasta?
cd c:
no início do script, classificávamos o problema de contexto / local. Todos os caminhos UNC funcionaram conforme o esperado.cd c:
é um alias para usarSet-Location C:
, portanto, é o mesmo comando.A outra alternativa seria usar o comando do sistema operacional e fornecer o comando powershell.exe c: /path/script.ps1 como comando e salvar seu script em script.ps1. Isso garantirá o uso do PowerShell do SO em vez de usar o provedor.
fonte