SQL Server 에이전트에서 Powershell 스크립트 실행 중 오류


9

SQL Server 에이전트 (SQL Server 2012 Enterprise 실행)를 통해 실행되는 SQL 작업이 있습니다. 작업의 마지막 단계는 네트워크 공유에있는 응용 프로그램을 실행하는 것입니다. 불행히도 응용 프로그램이있는 폴더의 이름 (폴더는 버전 번호)을 알지 못하므로 PowerShell을 사용하여 찾습니다.

set-location "\\server\companydocuments\MyApp\Application Files\"
$name = Get-ChildItem | sort name -desc | select -f 1 | select name
cd $name.name
& ".\Application.exe"

SQL Server에서 PowerShell 창을 열면 정상적으로 작동합니다. SQL Server 에이전트에서 이것을 실행하면 다음 오류가 발생합니다.

A job step received an error at line 1 in a PowerShell script.
The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'"

권한 문제 일 수 있으므로 자격 증명 (제작이 아닌 테스트 서버 임)에서 SQL Server 에이전트를 실행하려고 시도했지만 여전히 같은 오류가 발생합니다. 또한 네트워크 드라이브를 UNC 경로 대신 공유 폴더에 매핑하려고 시도했지만 동일한 오류가 발생했습니다.

누구든지이 폴더에 연결하는 방법을 제안 할 수 있습니까?

답변:


9

귀하의 문제가 SQLPS공급자 가 될 것이라고 믿습니다 . SQL Server 에이전트의 PowerShell 단계는 해당 공급자의 컨텍스트에 자동으로 들어가기 때문에 일반 콘솔에서 작동하는 일부 명령은 같은 방식으로 작동하지 않습니다. 기입 업이 이루어졌다 여기Set-Location. 기본적으로 SQLPS사용하려는 제공자 에게 알려 주어야 합니다.

코드는 다음과 같습니다.

set-location -Path Microsoft.PowerShell.Core\FileSystem::"\\server\companydocuments\MyApp\Application Files\"

원하는 경우 나머지를 두 줄로 묶을 수도 있습니다.


cd (Get-ChildItem | Sort-Object name -Descending | Select name -First 1).name
& ".\Application.exe"

@ShawnMelton 원격 서버에서 powershell 명령을 실행하는 것은 어떻습니까? dba.stackexchange.com/questions/83068/…
Marcello Miorelli

우리는 이와 동일한 문제를 겪었고 cd c:스크립트 시작 부분에서 컨텍스트 / 위치 문제를 정렬하는 것을 발견 했습니다. 그런 다음 모든 UNC 경로가 예상대로 작동했습니다.
James Khoury

cd c:는를 사용하는 별명 Set-Location C:이므로 동일한 명령입니다.

2

다른 대안은 운영 체제 명령을 사용하고 powershell.exe c : /path/script.ps1을 명령으로 지정하고 스크립트를 script.ps1에 저장하는 것입니다. 이렇게하면 공급자 대신 OS powershell을 사용하게됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.