Mam zadanie SQL, które działa za pośrednictwem SQL Server Agent (z uruchomionym SQL Server 2012 Enterprise). Ostatnim krokiem zadania jest uruchomienie aplikacji znajdującej się w udziale sieciowym. Niestety nie znam nazwy folderu, w którym znajduje się aplikacja (folder to numer wersji), więc używam PowerShell, aby go znaleźć:
set-location "\\server\companydocuments\MyApp\Application Files\"
$name = Get-ChildItem | sort name -desc | select -f 1 | select name
cd $name.name
& ".\Application.exe"
Jeśli otworzę okno programu PowerShell na SQL Server, to działa dobrze. Po uruchomieniu tego w programie SQL Server Agent pojawia się następujący błąd:
A job step received an error at line 1 in a PowerShell script.
The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'"
Pomyślałem, że może to być problem z uprawnieniami, więc wypróbowałem SQL Server Agent działający na moich poświadczeniach (jest to serwer testowy, a nie produkcyjny), ale wciąż pojawia się ten sam błąd. Próbowałem również mapować dysk sieciowy do folderu współdzielonego zamiast ścieżek UNC, ale ten sam błąd.
Czy ktoś może zasugerować, jak mogę połączyć się z tym folderem?
cd c:
na początku skryptu posortowało problem dotyczący kontekstu / lokalizacji. Następnie wszystkie ścieżki UNC działały zgodnie z oczekiwaniami.cd c:
to alias do używaniaSet-Location C:
, więc jest to to samo polecenie.Inną alternatywą byłoby użycie polecenia systemu operacyjnego i podanie powershell.exe c: /path/script.ps1 jako polecenia i zapisanie skryptu w script.ps1. Zapewni to użycie PowerShell systemu operacyjnego zamiast dostawcy.
źródło