首页 > 系统相关 >将powershell脚本嵌入至bat文件中

将powershell脚本嵌入至bat文件中

时间:2024-11-06 15:42:50浏览次数:4  
标签:脚本 bat 嵌入 批处理 PowerShell rsv powershell

 

如何从批处理文件执行Powershell命令?多行注释

在批处理文件中执行PowerShell命令,可以使用powershell命令行工具。以下是一个简单的批处理文件示例,它执行了一个PowerShell命令来显示当前目录下的文件和文件夹列表:

@echo off powershell -Command "Get-ChildItem" pause

如果你有一个更复杂的PowerShell命令或脚本,你可以直接将它写在powershell -Command后面。例如,以下批处理脚本执行了一个简单的PowerShell脚本,该脚本打印出“Hello, World!”:

@echo off powershell -Command "& { Write-Output 'Hello, World!' }" pause

如果你的PowerShell命令或脚本存储在一个文件中(比如script.ps1),你可以使用-File参数来执行它:

@echo off powershell -File "script.ps1" pause

请确保你的批处理文件和PowerShell脚本文件的路径正确,并且批处理文件有适当的权限来执行PowerShell命令。

提示:AI自动生成,仅供参考

 

出处:https://www.baidu.com/s?wd=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E6%89%A7%E8%A1%8CPowershell%E5%91%BD%E4%BB%A4%EF%BC%9F%E5%A4%9A%E8%A1%8C%E6%B3%A8%E9%87%8A&rsv_spt=1&rsv_iqid=0xe69e91a702250056&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_dl=tb&rsv_enter=1&oq=%25E5%25A6%2582%25E4%25BD%2595%25E4%25BB%258E%25E6%2589%25B9%25E5%25A4%2584%25E7%2590%2586%25E6%2596%2587%25E4%25BB%25B6%25E6%2589%25A7%25E8%25A1%258CPowershell%25E5%2591%25BD%25E4%25BB%25A4&rsv_btype=t&inputT=1365&rsv_t=b573T4a9LBv3ek9QndxGh2mNdqRnDWgHNSpKR%2BgVz8HQZMadzM1tAzLtvA9r9eeADBAv&rsv_n=2&rsv_pq=83257362005d7d20&rsv_sug3=3&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&rsv_sug4=1365

=======================================================================================

单个bat中调用powershell 代码----多行注释法

1. 来源

How to execute powershell commands from a batch file?

kapitanrum 的回答:https://stackoverflow.com/a/41986771

PowerShell项目介绍

PowerShell/PowerShell: PowerShell 是由微软开发的命令行外壳程序和脚本环境,支持任务自动化和配置管理。它包含了丰富的.NET框架功能,适用于Windows和多个非Windows平台,提供了一种强大而灵活的方式来控制和自动执行系统管理任务。 项目地址:https://gitcode.com/gh_mirrors/po/PowerShell

2. 思路

bat中注释使用rem::,而powershell单行注释用#,多行注释用<##>,这一差异可以轻松将ps1脚本转为bat后缀的脚本,而不需要做大量的改动。

提示:在bat中:是个空命令,返回状态为0。

要想在bat脚本中运行powershell命令,需要使用powershell.exe-Command参数。幸运的是,ps1中你可以使用Invoke-Command(别名icm)来运行scriptblock,所以我们只需要将脚本文本通过[scriptblock]::Create()做一个简单的转换就好了。

3. 代码

如果脚本编码不同,设置Get-Content读取时的编码,或者用[IO.File]类指定编码格式读取脚本.

<# :
@powershell "icm ([scriptblock]::Create((gc '%~f0' -Raw -Encoding UTF8)))"
exit
#>

Write-Host "Hello World" -fore Red
pause
# powershell script

 

2024-11-06 15:41:09【出处】:https://blog.csdn.net/qq_41755979/article/details/107370596

=======================================================================================

将powershell脚本嵌入至bat文件中

背景

将Powershell脚本嵌入至bat文件中可以有很多意想不到的收获,比如可以通过这个方式绕过授权,或者简化脚本的运行,或者可以便于复杂参数的配置

具体操作

@ECHO off
@setlocal EnableDelayedExpansion

@goto label1
@echo this lines should not be printed
@echo and this whole block (lines 4-8) can actually be removed
@echo I added these just for DoubleWen
@:label1

@set LF=^


@SET command=#
@chcp 65001 > nul
@FOR /F "tokens=*" %%i in ('findstr -bv @ "%~f0"') DO SET command=!command!!LF!%%i
@powershell -noprofile -command !command! & goto:eof


# *** POWERSHELL CODE STARTS HERE *** #
Write-Host '中文测试完美' -Fore red;
Write-Host 'This is PowerShell code being run from inside a batch file!' -Fore red;
$PSVersionTable;
Get-Process -Id $PID | Format-Table;

 

2024-11-06 15:40:11【出处】:https://blog.csdn.net/tcliuwenwen/article/details/117935243

=======================================================================================

使用批处理直接运行PowerShell脚本

背景:

作为一名苦逼的运维岗,需要经常写PowerShell脚本,自己写自己用,完美闭环,这本来没什么问题,但是由于项目、公司等等一系列的变更需求,这些脚本需要分发给普通用户使用,由于PowerShell脚本的运行有局限性,用户使用会有各种各样的问题,因此研究通过批处理直接运行PowerShell脚本。

思路:

1、考虑到易用性,给用户的必须是单个文件,因此通过批处理直接打开PowerShell脚本文件的方法行不通;

2、由于批处理涉及写入、删除等动作,因此批处理运行时需要自动提权

3、PowerShell的运行依赖电脑的安全策略,默认不能运行,因此需要变更执行策略,使得电脑可以运行PowerShell脚本;

方法:

1、批处理中提权:

%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit

2、变更电脑的执行策略,使得能够执行Powershell脚本:

PowerShell -Command "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser"

3、批处理中通过“more”命令生成PowerShell脚本,生成完成之后再执行Powershell脚本,示例:

more +2 %0 > ps.ps1

Powershell -File "ps.ps1"

4、及时删除生成的PowerShell文件:

Remove-Item $MyInvocation.MyCommand.Path -Force

示例:

@echo off
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
cd /d %~dp0
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -Scope CurrentUser"
more +7 %0 > PSScripts.ps1
Powershell -File "PSScripts.ps1"

Remove-Item $MyInvocation.MyCommand.Path -Force
Write-Host "Hello,$env:USERNAME,看到这句话说明执行成功了,按回车键退出。。。" -ForegroundColor white -NoNewline
Read-Host

 

2024-11-06 15:53:41【出处】:https://blog.csdn.net/u011226383/article/details/128318755

=======================================================================================

标签:脚本,bat,嵌入,批处理,PowerShell,rsv,powershell
From: https://www.cnblogs.com/mq0036/p/18530347

相关文章

  • 在 Windows Server 2025 中,您可以通过 Certutil、PowerShell 和证书管理器工具来进行
    certmgr.msc是Windows操作系统中的一个管理工具,它用于管理和查看证书存储。通过certmgr.msc,用户可以方便地浏览和管理个人证书、受信任的根证书颁发机构(CA)、中间证书颁发机构等不同证书存储区。 1. certmgr.msc 是什么?certmgr.msc是证书管理器(CertificateM......
  • Mybatis-Plus 的修改策略
    Mybatis-Plus的修改策略Mybatis-Plusupdatestrategy使用Mybatis-Plus提供的更新方法时,若实体中的字段为null,默认情况下,最终生成的update语句中,不会包含该字段。但是如果为空串时还是会操作.若想改变默认行为,可做以下配置。全局配置在application.yml中配置如下参数mybat......
  • 【保姆级教程】使用 oh-my-posh 和 clink 打造个性化 PowerShell 和 CMD
    内容预览≧∀≦ゞ终端美化指南——oh-my-posh和clink篇引言一、准备工作默认终端:WindowsTerminal离线安装步骤包管理器:scoop为什么选择使用Scoop安装?scoop安装scoop常用命令字体下载二、配置WindowsTerminal三、配置oh-my-posh安装激活oh-my-posh编辑P......
  • Transformer中为什么是layer norm不是batch norm
    讨论一下为什么transformer中用layernorm前序知识:常见的归一化层的工作原理 常见的norm之前已经讲过各个常见的归一化层了,不了解的可以去看看这篇文章。首先咱们得了解在NLP中,如果输入的几个句子不是等长的,需要使用Padding技术或者Truncation技术来使句子等长。因此对......
  • MyBatis 动态 SQL 详解
    动态SQL简介动态SQL是MyBatis的强大特性之一,它允许在XML映射文件内以标签的形式编写动态SQL,完成逻辑判断和动态拼接SQL的功能。动态SQL可以根据用户输入或外部条件动态地构建查询,避免了硬编码查询逻辑,简化了数据库查询的复杂度,同时提高了代码的可读性和维护性。......
  • CVTE - 嵌入式软件开发工程师(Linux方向)- 面经(12)
    -1、背景职位:嵌入式软件开发工程师(Linux方向)项目:2025届校园招聘提前批岗位职责:嵌入式开发工程师会参与全球市场显示类产品的开发,工作包括了系统底层驱动的调试、相关功能模块的代码实现、用户交互设计和上层应用开发等内容。负责全球市场显示类产品的系统设计、实现、优......
  • 经纬恒润 - 嵌入式软件工程师 - 面经(12)
    文章目录-1、背景0、笔试1、面经1.1、一面一二三四五六七八九十十一十二1.2、二面一2、一面(30min)-202408123、二面(30min)-20240815-1、背景职位:嵌入式软件工程师-campus-2025项目:2025届秋季校园招聘项目工作职责:在智能座舱......
  • MyBatis实现原理
    MyBatis底层实现原理1、MyBatis实现基础1.1、动态代理1.2、责任链1.3、动态代理和责任链结合使用实例1.3.1定义接口1.3.2.实现接口1.3.3创建InvocationHandler1.3.4使用动态代理和责任链2、MyBatis底层原理2.1拦截器接口Interceptor2.2插件Plugin2.3执行引擎Ex......
  • Mybatis学习笔记
    博主主页:【南鸢1.0】本文专栏:JAVA | SSM目录一、Mybatis框架1.Mybatis是什么2.Mybatis架构图3.Mybatis提供的功能4.为什么需要Mybatis二、Mybatis程序(一)分析思路(二)创建一个数据库并建一张表(三)创建一个普通的Maven项目并删除src目录创建一个模块(子工程)(四)更改M......
  • 【嵌入式Web服务器】嵌入式Web框架选型
    1.业界流行的嵌入式端Web服务器在嵌入式平台中,内置Web界面通常用于设备配置、监控和控制。以下是一些流行的嵌入式平台Web界面框架:uIPWeb服务器框架一个非常轻量级的Web服务器框架,专为嵌入式系统设计,支持小型TCP/IP协议栈。ESP8266/ESP32Web框架针对ESP8266和ESP32......