SSMS

2016-03-24 11 views
0

içinde Powershell'den .1S1 dosyası çalıştırılamıyor StackOverflow'ta başka bir gönderide, tam ihtiyacım olanı yapacak gibi görünen bir komut dosyası buldum, ancak .ps1 dosya türünü çalıştırmaya çalışırken hata alıyorum. SSMS içinde PowerShell.SSMS

$server = "APPDEV2014" 
cls 
Import-Module "sqlps" -DisableNameChecking 

$databases = Invoke-Sqlcmd -Query "select name from sys.databases where name not in ('master', 'tempdb', 'model', 'msdb')" -ServerInstance $server 
foreach ($db in $databases) { 
    $dbName = $db.name 
    $procedures = Invoke-Sqlcmd -Query "select SCHEMA_NAME(schema_id) as [schema], name from $dbName.sys.procedures" -ServerInstance $server 
    foreach ($proc in $procedures) { 
     if ($schema) { 
      $shortName = $proc.schema + "." + $proc.name 
      $procName = $db.name + "." + $shortName 
      try { 
       $result = Invoke-Sqlcmd -Database $dbName -Query "sys.sp_refreshsqlmodule '$shortName'" -ServerInstance $server -ErrorAction Stop 
       Write-Host "SUCCESS|$procName" 
      } 
      catch { 
       $msg = $_.Exception.Message.Replace([Environment]::NewLine, ",") 
       Write-Host "FAILED|$procName|$msg" -ForegroundColor Yellow 
      } 
     } 
    } 
} 

komut ben yürütme ediyorum edilir:

ortamı 2014

Benim FindBrokenObjectsInSQLServer.ps1 dosyası olarak tanımlanır SQL Server

PS SQLSERVER:\SQL\APPDEV2014\DEFAULT> PowerShell -command 
"H:\SQLScripts\FindBrokenObjectsInSQLServer.ps1" 

Son olarak hata ben Alıyorum:

Import-Module : A positional parameter cannot be found that accepts argument 
'?'. 
At H:\SQLScripts\FindBrokenObjectsInSQLServer.ps1:3 char:1 
+ Import-Module "sqlps"? -DisableNameChecking 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Import-Module], ParameterB 
    indingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell 
    .Commands.ImportModuleCommand 

Her türlü öneri/yön takdir edilecektir. Bu PowerShell ile çalışırken ilk denemem. Teşekkürler.

+0

Zaten bir PowerShell istemcisindesiniz (komut isteminin başında bulunan PS'e bakın), dolayısıyla 'PowerShell -command ... 'yazmanız gerekmez. Çalıştırmak istediğiniz komut dosyasının adını ve ardından parametrelerini yazıp Enter tuşuna basın. –

+0

Teşekkür ederim, Bill. Yanıtı takdir et. – Melinda

cevap

0

Sen daha büyük olasılıkla nedeniyle yerli SQL Server 2016 için makinenize bulunmayan bir modül almak için çalışıyorum, ama SQL sunucusuna özgü olmayan 2014

SQL Server 2014 yüklemeniz gerekebilir ediyoruz RSAT araçlar yüklü ve pencereler-özelliklerle altında etkin olmadığı durum

Import-Module ActiveDirectory 

gibi şeyler yapmak çalışırken https://www.microsoft.com/en-us/download/details.aspx?id=46696

aynı hataları oluşur: burada bulabilirsiniz Paketi SP1'i, öne çıkarın.

+0

Ek bilgi için teşekkürler Chris. Takdir edildi. – Melinda

1

Betiği doğru kaydettirdiğinizden emin olun. Import-Module içeren satırda fazladan bir soru işareti var gibi görünüyor. hat dikkatle bakın şikayetçi olduğunu:

+ Import-Module "sqlps"? -DisableNameChecking

Bildirimi "sqlps" parametresinden sonra ekstra soru işareti? Silin.

+0

Orijinal komut dosyasında yayınlanan OP'den bu ekstra '?' orada değil. Özel durum işleyicide, kabul etmediği konumsal parametreye açıklama ekliyor. Okuduktan sonra, modülün adını çözemediği anlaşılıyor, bu muhtemelen makinede değil. –

+1

Üç nedenden dolayı doğru değil: 1. Hata açıkça konumsal parametre '?' Bulamadığını belirtir. 2. Modül mevcut değilse, hata "Belirtilen modül yüklenmedi." 3. OP'in PowerShell komutu, mevcut sürücüyü 'SQLSERVER:', yani SQLPS modülünün aslında kurulu olduğu ölü bir hediye olarak gösterir. – JamesQMurphy

+0

iyi yakalama. Sadece orjinal örnekte yer alan şey ile devam ediyordum, tam olarak hatada bulduğunuz şey OP'nin karakterini koymuş olabileceğini gösteriyor. –

İlgili konular