J'ai le script PowerShell suivant pour créer un dossier à un emplacement d'action. La part a des autorisations de contrôle intégralement pour tout le monde. J'ai accordé toutes les autorisations pour les tests.
Le problème est le script fonctionne bien lorsque j'exécute manuellement. Il s'exécute également bien lorsque je l'exécute en tant que compte SQL Server Agent Service. Mais le même script échoue lorsque j'essaie d'exécuter dans le cadre du travail de SQL Server Agent. Est-ce que j'ai râté quelque chose?
$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.
Lorsque vous accédez à des chemins UNC ou à tout "emplacement" qui n'est pas un lecteur local (c'est-à-dire registre), à partir d'une étape de travail PowerShell, vous devez préfixer le chemin avec Microsoft.PowerShell.Core\FileSystem::
. Cela indique à SQLPS quel fournisseur à utiliser, ce qui n'est pas requis dans la normale PowerShell mais est requis dans la mise en œuvre du serveur SQL.
Vous pouvez également modifier le répertoire à l'avance à l'avance sur un lecteur local (CD C :) et il devrait ensuite fonctionner sans préfixer le nom du fournisseur, mais vous voudrez peut-être rester dans la valeur par défaut SQLSERVER:\SQL\SERVERNAME\INSTANCENAME
Chemin selon le besoin de votre script.
Plus d'informations: