SQL सर्वर एजेंट में Powershell स्क्रिप्ट चलाने में त्रुटि


9

मेरे पास SQL ​​सर्वर एजेंट (रनिंग SQL सर्वर 2012 एंटरप्राइज़) के माध्यम से चलने वाली 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 सर्वर पर एक PowerShell विंडो खोलता हूं तो यह ठीक काम करता है। जब मैं इसे SQL सर्वर एजेंट में चलाता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:

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 सर्वर एजेंट की कोशिश की है, लेकिन मुझे अभी भी वही त्रुटि मिलती है। मैंने UNC रास्तों के बजाय साझा फ़ोल्डर में एक नेटवर्क ड्राइव को मैप करने की कोशिश की है, लेकिन वही त्रुटि।

क्या कोई सुझाव दे सकता है कि मैं इस फ़ोल्डर से कैसे जुड़ सकता हूं?

जवाबों:


9

मुझे विश्वास है कि आपका मुद्दा बनने वाला है SQLPS प्रदाता है। चूंकि SQL सर्वर एजेंट में 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 रिमोट सर्वर पर पावरशेल कमांड चलाने के बारे में क्या? dba.stackexchange.com/questions/83068/…
Marcello Miorelli

हमारे पास यह एक ही मुद्दा था और cd c:स्क्रिप्ट की शुरुआत में संदर्भ / स्थान के मुद्दे को हल करते हुए पाया गया। फिर सभी UNC रास्तों ने उम्मीद के मुताबिक काम किया।
जेम्स खुरई

cd c:उपयोग करने के लिए एक उपनाम है Set-Location C:, इसलिए यह एक ही कमांड है।

2

अन्य विकल्प ऑपरेटिंग सिस्टम कमांड का उपयोग करना और शक्तियां ..exe c: /path/script.ps1 को कमांड के रूप में देना और स्क्रिप्ट में अपनी स्क्रिप्ट को सहेजना है ।1। यह प्रदाता का उपयोग करने के बजाय OS के पॉवरशेल का उपयोग करना सुनिश्चित करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.