2017-09-06 4 views
0
@ECHO off 

$BIOS= Get-WmiObject -computername "BAHRIATSG2-PC" -Namespace 
root/hp/instrumentedBIOS -Class HP_BIOSSettingInterface 

$BIOS.SetBIOSSetting('Setup Password','<utf-16/>TheBIOSPassword','<utf-16/>') 

pause 

wenn ich speichern .BAT-Datei auszuführen und führen Sie es nicht anders in Powershell es funktioniert einwandfrei funktioniert, wenn ich die manuelle Eingabe ..Wie Powershell-Befehl in Batchdatei

+5

Mögliches Duplikat von [So führen Sie ein PowerShell-Skript aus einer Batchdatei aus] (https://stackoverflow.com/questions/19335004/how-to-run-a-powershell-script-from-a-batch-file) – arco444

+1

Ich bin nicht sicher, dass die doppelte Frage es ziemlich erklärt. Sie müssen Ihr Skript als .ps1-Datei speichern und dann wie in der obigen verknüpften Frage beschrieben aus dem a .bat-Skript ausführen. –

+0

Mögliches Duplikat von [So führen Sie Powershell-Befehle aus einer Batchdatei aus?] (Https://stackoverflow.com/questions/6037146/how-to-execute-powershell-commands-from-a-batch-file) –

Antwort

0

Ihre Powershell beilegen Code,

powershell -Command "& {}" 

Denken Sie daran, alle Aussagen mit ; zu trennen und Ihre " mit einer Zeichenfolge in Anführungszeichen einzuschließen, dh durch ""

powershell -Command "& {$BIOS= Get-WmiObject -computername ""BAHRIATSG2-PC\"" -Namespace root/hp/instrumentedBIOS -Class HP_BIOSSettingInterface; $BIOS.SetBIOSSetting('Setup Password','<utf-16/>TheBIOSPassword','<utf-16/>')}" 
+0

Danke, dass es jetzt funktioniert :) – Alone

+0

Falls irgendjemand anderes über diese hinweg läuft, so wie ich es getan habe - Es kann helfen, 'foreach-object' anstatt des'% 'Alias ​​zu verwenden, wenn man einen Befehl wie diesen ausführt. Andernfalls kann der Fehler "Ausdrücke sind nur als erstes Element einer Pipeline zulässig" auftreten. –

0

Power seine eigene Skriptdatei hat Typ, Erweiterung ist .ps1

speichern sie den Code zu einer PS1-Datei, und es aus einer Batch-Datei ausgeführt mit:

Power xxx.ps1

1

mit Ich denke this is die einfachste und klarste Weg, weil sie don‘ t erfordert einen überflüssigen Schalter; einfach nur Code Powershell:

@ECHO off 

PowerShell^
    $BIOS= Get-WmiObject -computername \"BAHRIATSG2-PC\" -Namespace;^
    root/hp/instrumentedBIOS -Class HP_BIOSSettingInterface;^
    $BIOS.SetBIOSSetting('Setup Password','<utf-16/>TheBIOSPassword','<utf-16/>') 

pause 

Nur eine ; ^ am Ende jeder Zeile hinzufügen und jedes Zitat mit Backslash.

Verwandte Themen