如何在批处理文件中运行powershell命令

问题描述 投票:0回答:4
@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 batch-file
4个回答
14
投票

将您的 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/>')}"

8
投票

我认为这是最简单、最清晰的方式,因为它不需要任何多余的开关;只是简单的 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

只需在除最后一行之外的每行末尾添加一个

; ^
并用反斜杠转义每个引号。请确保不要在该行的最后一个
^
之后插入任何空格。


2
投票

关注此主题:
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

所需文件的路径在哪里。

转换后的文件位于源目录中。即


1
投票

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

将代码保存到 .ps1 文件,并使用以下命令从批处理文件运行它:

powershell xxx.ps1

© www.soinside.com 2019 - 2024. All rights reserved.