IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Script PowerShell vide - Administration SqlServer


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Script PowerShell vide - Administration SqlServer
    Bonjour à tous,

    Afin d'obtenir des infos sur toutes les instances de mon réseau j'ai rédigé un script Powershell.
    Je souhaite renvoyer le résultat de ce script sous format csv afin de le récupéra pour un site intranet.

    Le problème que je rencontre est que le fichier généré est vide.

    Pouvez vous svp m'aider?

    foreach ($svr in get-content "D:\test\ListeInfoServeurs.txt")
    {
    $con = "server=$svr;database=master;Integrated Security=sspi"
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) / 1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    $da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
    $dt = new-object System.Data.DataTable
    $da.fill($dt) | out-null
    $svr
    $dt | Format-Table -autosize
    } $output | export-csv export.csv -force -NoTypeInformation
    $output | FT

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Svp quelqu'un peut il m'aider c'est urgent et j'arrête pas de faire des tests sans succès!

    C'est très frustrant

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Bonjour,

    Perso j'avais utilisé Invoke-Sqlcmd :
    http://msdn.microsoft.com/fr-fr/library/cc281720.aspx
    (non compris dans le powershell standard )

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invoke-Sqlcmd -ServerInstance "serverName\InstanceName" -DATABASE Master -Query "la requete" | export-csv "c:\temp\extract_ps.csv" -UseCulture -NoTypeInformation
    ça ne répond à ton problème mais c'est une autre piste ...

    Bonne journée,

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Get-Content "D:\test\ListeInfoServeurs.txt" | Foreach {
      $con = "server=$svr;database=master;Integrated Security=sspi"
      $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
      $da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
      $dt = new-object System.Data.DataTable
      $da.fill($dt) | out-null
      $svr
      $dt | Format-Table -autosize
    } | export-csv export.csv -force -NoTypeInformation
    J'aurais plutôt fait comme ça, mais je suis d'accord avec krousty, il est plus simple d'utiliser les cmdlets SQL fournit par Microsoft.

    Si vous souhaitez utilisez ces outils il va vous falloir au minimum un post avec Powershell d'installer ainsi que Les Windows Powershell Extension. Si vous lancez la commande à partir d'un server SQL, pas besoin de vous embêtez vous disposez déjà de ces cmdlets il suffit de les charger comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    add-pssnapin sqlserverprovidersnapin100
    add-pssnapin sqlservercmdletsnapin100
    Et là votre code devient plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % { Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -database MASTER } | export-csv export.csv -NoTypeInformation
    J'ai pas testé ce code, mais ça devrait être ok

    @+

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Merci de votre retour les amis

    La correction de mon script renvoie effectivement un fichier csv qui n'est pas vide mais avec les mauvaises infos

    Voici le résultat:

    "PSPath","PSParentPath","PSChildName","PSDrive","PSProvider","ReadCount","Length"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"

    En ce qui concerne vos remarques concernant les cmdlets SQL je ne les connaissais pas.
    En effet je débute sur PowerShell suite à cette demande de référencer les serveurs de mon parc.

    J'ai donc chargé les cmdlets car je suis sur un serveur de dev SqlServer et j'ai installé PowerShell 2.0 mais le script suivant renvoie également un fichier vide

    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) / 1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % { Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -DATABASE MASTER } | export-csv export.csv -NoTypeInformation

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    Salut, que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % {
      Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -DATABASE MASTER 
    } | Out-File export.csv -append

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Merci encore pour ton aide.

    Le script renvoie toujours un fichier vide

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    Nouvel essai...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % {
      $a = Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -DATABASE MASTER 
      echo $a >> export.txt
    }

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Je crois que je vais me suicider! J'en peux plus!

    J'ai perdu ma session cette nuit visiblement et maintenant le passage de scripts ne marchent même plus!! Je n'arrive pas à charger mes cmdlets!! c'est horrible!!

    En fait au passage du script j'ai le message d'erreur suivant:

    ForEach-Object : The term 'Invoke-Sqlcmd' is not recognized as the name of a cmdlet, function, script file, or operable
    program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:67
    + gc "D:\mssql\test\ListeInfoServeurs.txt" | % <<<< {
    + CategoryInfo : ObjectNotFound: (Invoke-Sqlcmd:String) [ForEach-Object], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.ForEachObjectCommand

    Et lorsque j'essaie de charger les cmdlets j'ai le message suivant:

    PS C:\Documents and Settings\adm-> add-pssnapin sqlservercmdletsnapin100
    Add-PSSnapin : No snap-ins have been registered for Windows PowerShell version 2.
    At line:1 char:13
    + add-pssnapin <<<< sqlservercmdletsnapin100
    + CategoryInfo : InvalidArgument: (sqlservercmdletsnapin100:String) [Add-PSSnapin], PSArgumentException
    + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

    Je suis perdu j'ai tout mélangé en fait j'aurais du apprendre dans un 1er temps le powershell au lieu de partir à l'aventure la tête baissée

  10. #10
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    visiblement, les snappin ne sont plus dispo... c'est étrange, surtout si vous êtes toujours sur le même poste...

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Bah en fait c'est plutôt un serveur de dev sur lequel j'avais installé PawerShell.

    Quelqu'un d'autre a du se connecter et virer ma session et depuis plus rien

Discussions similaires

  1. Formation administration sqlserver
    Par elharet dans le forum Administration
    Réponses: 1
    Dernier message: 26/11/2009, 13h39
  2. Essayer d'activer un script powershell sous IIS
    Par machpro dans le forum IIS
    Réponses: 1
    Dernier message: 06/12/2008, 00h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo