也贴在这里:
如何在批处理文件中运行powershell命令
下面这个线程:
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
其中是所需文件的路径。
转换后的文件位于源目录中。例如,<FILE-PATH>或<DIR-PATH>。
把它们放在一起:
创建一个.ps1文件(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
}
}
# change <DIR> to the path of the folder in which the desired powershell scripts are.
# the converted files will be created in the destination path location (in <DIR>).
Get-ChildItem -Path <DIR> -Filter *.ps1 |
Convert-PowerShellToBatch
不要忘记,如果你只想转换一个文件而不是很多,你可以替换下面的文件
Get-ChildItem -Path <DIR> -Filter *.ps1 |
Convert-PowerShellToBatch
用这个:
Get-ChildItem -Path <FILE-PATH> |
Convert-PowerShellToBatch
正如我之前解释过的。