@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中正常工作..
答案 0 :(得分:5)
我认为this is是最简单,最清晰的方式,因为它不需要任何多余的开关;只是简单的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
只需在每行末尾添加; ^
并使用反斜杠转义每个引号。
答案 1 :(得分:1)
将您的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/>')}"
答案 2 :(得分:0)
powershell有自己的脚本文件类型,扩展名为.ps1
将代码保存为.ps1文件,并使用以下命令从批处理文件运行它:
powershell xxx.ps1
答案 3 :(得分:0)
关注此线程:
https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/converting-powershell-to-batch
您可以使用此 PowerShell 功能轻松地将任何 PowerShell 脚本转换为批处理文件:
function Convert-PowerShellToBatch
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[string]
[Alias("FullName")]
$Path
)
process
{
$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((Get-Content -Path $Path -Raw -Encoding UTF8)))
$newPath = [Io.Path]::ChangeExtension($Path, ".bat")
"@echo off`npowershell.exe -NoExit -encodedCommand $encoded" | Set-Content -Path $newPath -Encoding Ascii
}
}
要转换目录中的所有 PowerShell 脚本,只需运行以下命令:
Get-ChildItem -Path <DIR-PATH> -Filter *.ps1 |
Convert-PowerShellToBatch
所需文件夹的路径在哪里。例如:
Get-ChildItem -Path "C:\path\to\powershell\scripts" -Filter *.ps1 |
Convert-PowerShellToBatch
要转换单个 PowerShell 脚本,只需运行以下命令:
Get-ChildItem -Path <FILE-PATH> |
Convert-PowerShellToBatch
所需文件的路径在哪里。
转换后的文件位于源目录中。即,