2017-09-06 148 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 

当我保存为.bat文件并运行它不工作,否则它在PowerShell中工作正常,当我手动输入..如何在批处理文件中运行PowerShell命令

+5

[如何从批处理文件运行PowerShell脚本](https://stackoverflow.com/questions/19335004/how-to-run-a-powershell-script-from-a-batch-file ) – arco444

+1

我不确定重复的问题是否可以解释它。您需要将您的脚本保存为.ps1文件,然后您可以从.bat脚本执行它,如上述链接问题中所述。 –

+0

[如何从批处理文件执行powershell命令?](https://stackoverflow.com/questions/6037146/how-to-execute-powershell-commands-from-a-batch-file) –

回答

0

附上您的PowerShell代码中,

powershell -Command "& {}" 

记住所有的语句与;分离,并用带引号的字符串附上",通过使用""

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

感谢它现在的工作:) – Alone

+0

如果有人遇到这个问题,就像我这样做 - 当执行这样的命令时,可能有助于使用'foreach-object'而不是'%'别名。 否则,可能会导致'表达式只被允许作为管道错误的第一个元素。 –

0

PowerShell有它自己的脚本文件类型,扩展名为.ps1

你的代码保存到一个名为.ps1文件,并从一个批处理文件运行它:

PowerShell的xxx.ps1

1

,即我认为this is最简单和最清晰的方式,因为它穿上” t需要任何多余的开关;只是简单的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 

就在每一行的末尾添加一个; ^和转义反斜线每个报价。

相关问题