Bonjour,

je cherche actuellement à écrire un script powershell qui exécute une requête SQL sur un serveur SQL-Server pour faire le backup des fichiers de log d'une ferme SharePoint.

Je vous mets en copie le script complet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Program` Files\Common` Files\Microsoft` Shared\Web` Server` Extensions\14\CONFIG\POWERSHELL\Registration\\sharepoint.ps1 2>$null
 
Get-SPDatabase | foreach {
    $cmd1 = "DECLARE @time varchar(2)
	        DECLARE @name varchar(256)
	        DECLARE @dbname varchar(256)
 
	        SET @dbname = '"
    $cmd2 = $_.name
    $cmd3 ="'
	        SET @time = replace(convert(varchar, getdate(), 108), ':', '.')
	        SET @name = 'E:\Backup\H'+@time+'_'+@dbname+'_log'
 
	        BACKUP LOG @dbname
	        TO DISK = @name
    "
    sqlcmd -s localhost -Q "$cmd1$cmd2$cmd3"
}
Au début je n'avais que sqlcmd -s localhost -Q "la requête" et faisait '$($_.name)' dans la requête (au niveau de cmd2). Ce qui marchait bien en ISE et invite de commande, mais retournait une erreur de nom sur SQL-Server.

Le script tourne très bien sur PS ISE, tout aussi bien sur PS.
MAIS, quand il tourne en job sur SQL-Server, il me dit que Get-SPDatabase n'est pas reconnu...

Et j'avoue ne pas du tout comprendre pourquoi alors que le script tourne très bien sur un invite PS standard.