Frage

Hier ist, was ich versuche zu tun:

@ECHO OFF

CALL powershell -ExecutionPolicy RemoteSigned -Command "$sh = new-object -com 'Shell.Application'; $sh.ShellExecute('powershell', '-NoExit -Command "$path = """HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}""";echo $path"', '', 'runas')"

PAUSE

Grundsätzlich mag ich eine Batch-Datei haben, dass ich doppelt klicken kann, das einen Powershell-Skript ausgeführt wird, das einen anderen Powershell-Skript ruft aber fragt nach Admin-Rechten und läuft diesen Befehl als Administrator.

Ich habe Probleme aber mit den doppelten Anführungszeichen Ich denke ... ich viele Dinge ausprobiert habe, aber kann nicht scheinen, um es zu beheben, ist hier die Powerfehlermeldung:

Bad numeric constant: 4D.
At line:1 char:57
+ $path = HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D <<<< 36E972-E325-11C
E-BFC1-08002BE10318};echo $path
    + CategoryInfo          : ParserError: (4D:String) [], ParentContainsError
   RecordException
    + FullyQualifiedErrorId : BadNumericConstant

PS C:\Windows\system32>
War es hilfreich?

Lösung

würde ich den integrierten Befehl verwenden Startprozess, anstatt die Schaffung eines Shell-Objekt z.

CALL powershell -ExecutionPolicy RemoteSigned -NoProfile -Command "& {Start-Process PowerShell -Verb runas -Arg '-NoExit -Command & {$path=''foo'';$path}'}"

Für alles, was von Bedeutung der Angabe wird als störend. Können Sie das endgültige Skript in einer Datei speichern, und führen Sie die Skriptdatei mit dem Parameter -FILE auf PowerShell.exe?

Andere Tipps

ich es gelöst, hier ist die lange Partie Einzeiler für mein eigentliches Problem, so dass die Leute ein echtes Beispiel sehen können:

CALL powershell -ExecutionPolicy RemoteSigned -Command "$sh = new-object -com 'Shell.Application'; $sh.ShellExecute('powershell', '-NoExit -Command ""$path = ''HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}''; Get-Childitem $path -ErrorAction SilentlyContinue | Where { (Get-ItemProperty $_.PSPath DriverDesc) -Match ''VMnet'' } | Foreach { New-ItemProperty -ErrorAction SilentlyContinue $_.PSPath -Name ''*NdisDeviceType'' -Value ''1'' -PropertyType DWord }; netsh interface set interface name=''VMware Network Adapter VMnet1'' admin=DISABLED; netsh interface set interface name=''VMware Network Adapter VMnet1'' admin=ENABLED; netsh interface set interface name=''VMware Network Adapter VMnet8'' admin=DISABLED; netsh interface set interface name=''VMware Network Adapter VMnet8'' admin=ENABLED""', '', 'runas')"

P. S:. Falls sich jemand fragt sich, was es für ... Ich laufe dies jedes Mal, wenn ich installieren / update VMware Workstation die virtuelle Netzwerkadapter aus, die auf dem Netzwerk- und Freigabecenter in Windows Vista / 7

verstecken
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top