Hallo Jens,
ich kann für mich gerade nicht nachvollziehen wieso du den SQL Server stoppen möchtest um eine Sicherung der Datenbanken vorzunehmen. Spricht bei euch etwas gegen das vom SQL Server integrierte Backupverfahren?
Was die Strings mit Leerzeichen und dann mit Invoke-Expression angeht, hier ein paar kleine Beispiele:
GEHT: Invoke-Expression ('C:\windows\system32\notepad.exe')
GEHT NICHT: Invoke-Expression ('C:\Program Files (x86)\Internet Explorer\iexplore.exe')
GEHT: & 'C:\Program Files (x86)\Internet Explorer\iexplore.exe'
GEHT: Invoke-Expression ("`& 'C:\Program Files (x86)\Internet Explorer\iexplore.exe'")
GEHT: .'C:\Program Files (x86)\Internet Explorer\iexplore.exe'
GEHT: Invoke-Expression (".'C:\Program Files (x86)\Internet Explorer\iexplore.exe'")
Wieso der zweite Befehl nicht geht, ist leicht erklärt. Invoke-Expression wertet den Text aus wenn z.B. Variablen enthalten sind und das Ergebnis wird als "normaler" Befehl dann interpretiert. So wird aus den ersten zwei Befehlen: C:\windows\system32\notepad.exe bzw. C:\Program Files (x86)\Internet Explorer\iexplore.exe. Wenn man die beiden direkt in der PowerShell ausführt, bekommt man die gleiche Fehlermeldung für die iexplore.exe.
Der dritte und fünte Befehl zeigen wie das Kommando für die iexplore.exe in PowerShell richtig aussehen muss. Hier übernimmt das & und der ., die Umstellung des Parsings auf ein Kommando, das in diesem Fall den IE öffnet. Der vierte und sechste Befehlt zeigen dann die Umsetzung mit dem Invoke-Expression.
Schau dir eventuell auch mal den Thread na http://www.powershell-ag.de/ps/Foren/PowerShellForum/tabid/83/forumid/-1/threadid/374/scope/posts/threadpage/1/Default.aspx, hier sind ein paar Beispile mit Kommandozeilenparameter drin.
Ich hoffe dies hilft dir weiter!
Viele Grüße
Helmut