Sql-Server

通過 SQL Server 代理作業呼叫 PowerShell 命令“New-Item”時失敗

  • January 23, 2020

我有以下 PowerShell 腳本來在共享位置創建一個文件夾。共享對每個人都有完全控制權限。我已授予所有測試權限。

問題是當我手動執行時腳本工作正常。當我將它作為 SQL Server 代理服務帳戶執行時,它也可以正常執行。但是,當我嘗試作為 SQL Server 代理作業的一部分執行時,相同的腳本會失敗。我在這裡錯過了什麼嗎?

$path = "\\server\shared\path\01222020"
New-Item -path $path -ItemType Directory -Force

Exception:
Date        1/22/2020 5:25:10 PM
Log     Job History (test)

Step ID     1
Server      serverA
Job Name        Test
Step Name       Test
Duration        00:00:01
Sql Severity    0
Sql Message ID  0
Operator Emailed    
Operator Net sent   
Operator Paged  
Retries Attempted   0

Message
Executed as user: domain\agent_service_account. A job step received an error at 
line 9 in a PowerShell script. The corresponding line is 'New-Item -path $path 
-ItemType Directory '. Correct the script and reschedule the job. The error 
information returned by PowerShell is: 'Invalid Path: 
'\\server\shared\path\01222020'.  '.  Process Exit Code -1.  The step failed.

從 PowerShell 作業步驟訪問 UNC 路徑或任何不是本地驅動器(即系統資料庫)的“位置”時,您需要在路徑前加上Microsoft.PowerShell.Core\FileSystem::. 這告訴 SQLPS 要使用哪個提供程序,這在普通 PowerShell 中不是必需的,但在 SQL Server 實現中是必需的。

或者,您可以預先將目錄更改為本地驅動器 (cd C:),然後它應該可以在不為提供程序名稱添加前綴的情況下工作,但您可能希望保留在預設SQLSERVER:\SQL\SERVERNAME\INSTANCENAME路徑中,具體取決於您的腳本需要什麼。

更多資訊:

https://dbatools.io/agent/

https://social.technet.microsoft.com/Forums/windowsserver/en-US/ec7f3ae8-d196-459e-b9dc-e6ed0df93004/running-powershell-from-sql-server-using-unc-paths

引用自:https://dba.stackexchange.com/questions/258097