@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 代码包含在,
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/>')}"
我认为这是最简单、最清晰的方式,因为它不需要任何多余的开关;只是简单的 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
只需在除最后一行之外的每行末尾添加一个
; ^
并用反斜杠转义每个引号。请确保不要在该行的最后一个 ^
之后插入任何空格。
关注此主题:
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
要转换single PowerShell 脚本,只需运行以下命令:
Get-ChildItem -Path <FILE-PATH> |
Convert-PowerShellToBatch
所需文件的路径在哪里。
转换后的文件位于源目录中。即
powershell有自己的脚本文件类型,扩展名为.ps1
将代码保存到 .ps1 文件,并使用以下命令从批处理文件运行它:
powershell xxx.ps1