首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不生成msbuild.exe进程的情况下从Powershell运行MSBuild?

在不生成msbuild.exe进程的情况下从Powershell运行MSBuild,可以使用以下方法:

  1. 使用MSBuild命令行参数

可以使用MSBuild命令行参数来指定不生成msbuild.exe进程。具体方法是在Powershell中使用以下命令:

代码语言:txt
复制
msbuild.exe /nologo /noconsolelogger /v:minimal /clp:NoSummary /p:BuildInParallel=true /p:BuildProjectReferences=false /p:Configuration=Release /p:Platform=x64 /p:OutputPath=bin\x64\Release\ /p:ErrorReport=none /p:WarningsNotAsErrors=MSB4011 Solution.sln

其中,/nologo /noconsolelogger /v:minimal /clp:NoSummary 参数可以减少MSBuild的输出信息,/p:BuildInParallel=true /p:BuildProjectReferences=false 参数可以启用并行构建,/p:Configuration=Release /p:Platform=x64 /p:OutputPath=bin\x64\Release\ 参数可以指定构建的配置和平台,/p:ErrorReport=none /p:WarningsNotAsErrors=MSB4011 参数可以控制错误报告和警告行为。

  1. 使用MSBuild API

可以使用MSBuild API来在Powershell中运行MSBuild,以下是一个示例代码:

代码语言:powershell
复制
Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

$projectFile = 'Path\To\Project.csproj'
$buildParameters = New-Object 'Microsoft.Build.Execution.BuildParameters'
$buildParameters.Loggers = New-Object 'System.Collections.Generic.List[Microsoft.Build.Framework.ILogger]'
$buildParameters.Loggers.Add((New-Object 'Microsoft.Build.Logging.ConsoleLogger'))
$buildRequest = New-Object 'Microsoft.Build.Execution.BuildRequestData' -ArgumentList $projectFile, $null, '4.0', $null, $null, New-Object 'System.Collections.Generic.Dictionary[string,string]'
$buildRequest.GlobalProperties.Add('Configuration', 'Release')
$buildRequest.GlobalProperties.Add('Platform', 'x64')
$buildRequest.GlobalProperties.Add('OutputPath', 'bin\x64\Release\')
$buildRequest.GlobalProperties.Add('ErrorReport', 'none')
$buildRequest.GlobalProperties.Add('WarningsNotAsErrors', 'MSB4011')
$buildResult = [Microsoft.Build.Execution.BuildManager]::DefaultBuildManager.Build($buildParameters, $buildRequest)

这个示例代码使用MSBuild API来创建一个BuildParameters对象和一个BuildRequestData对象,然后使用BuildManager类的Build方法来执行MSBuild构建。在这个示例中,我们设置了一些全局属性,例如Configuration、Platform、OutputPath、ErrorReport和WarningsNotAsErrors,以控制MSBuild的行为。

总之,在不生成msbuild.exe进程的情况下从Powershell运行MSBuild,可以使用MSBuild命令行参数或MSBuild API来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OFFENSIVE LATERAL MOVEMENT 横向移动(译文)

两者之间的区别,尽管CS文档有说明,PsExec(psh)仍在调用Powershell.exe,并且您的信标将作为Powershell.exe进程运行,而没有(psh)的PsExec将作为rundll32...默认情况下,PsExec将生成rundll32.exe进程以从中运行。它不会将DLL拖放到磁盘或任何东西上,因此从蓝队的角度来看,如果rundll32.exe在没有参数的情况下运行,则非常可疑。...从攻击者的角度来看,这用于编译C#代码以生成恶意的二进制文件或有效负载,甚至直接从XML文件运行有效负载。MSBuild也可以通过SMB进行编译,如下语法所示。...命令,而不会通过不受管进程(二进制直接编译成机器代码)而生成Powershell。...此方法的问题在于它产生了两个进程:mmc.exe,因为从MMC2.0和MSBuild.exe调用了DCOM方法。 另外,这确实会临时写入磁盘。

4.2K10
  • 红队技巧-白加黑

    ,通过微软的官方介绍来看,Msbuild.exe可以通过项目xml文件来构建,这也是关键。...适用条件:.NET Framework>=4.0 第一步找到Msbuild.exe 默认情况下Msbuild.exe是没有在系统环境变量中,所以需要我们先找到,默认情况下Msbuild.exe是在....这里要下载nps_payload工具可以生成xml或hta的文件,msbuild都可以执行,且自带的免杀挺有效的。...第三步生成启动项目文件 msbuild.exe Micropoor.xml 2.2 白名单Installutil.exe Installer工具是一个命令行实用程序,允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源...工具 GreatSCT可以基于Metasploit、自定义shellcode、powershell等生成payload,然后可利用多种白名单程序进行加载,从而达到免杀的目的。

    2.4K20

    MSBuild 命令的简单使用

    MSBuild 命令的简单使用 独立观察员 2022 年 7 月 7 日 位置 在 VS 安装目录下,如:D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin...view=vs-2022) 使用 MSBuild.exe 生成项目或解决方案文件时,可以包含几个开关来指定过程的各个方面。 每个开关都有两种形式:-switch 和 /switch。...如果从 Windows 命令提示符之外的 shell 运行 MSBuild,则开关的参数列表(用分号或逗号分隔)可能需要单引号或双引号,以确保将列表传递到 MSBuild,而不是由 shell 解释。...语法 MSBuild.exe [Switches] [ProjectFile] 参数 参数 描述 ProjectFile 在指定项目文件中生成目标。...开关 略(见原文) 示例 MSBuild.exe MyProject.proj -t:rebuild 问题 1、VS 中的生成前事件中参数未被识别的问题 项目中有如下生成事件,其中使用了 $(SolutionDir

    1.3K10

    一文搞定SonarQube接入C#(.NET)代码质量分析

    msbuild.exe的路径一般如下: X86: C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe X64: C:\Program Files (x86...2、使用MSBuild方式进行Sonar Scanner扫描代码前期准备文件生成,CMD命令下运行: SonarScanner.MSBuild.exe begin /k:"hcloud.Common.KDY.WebApi.Core...=Release (指定编译模式) 或者 MSBuild.exe D:\hcloud\Common\Common.sln /t:Rebuild (指定具体的.sln解决方案) 编译项目运行结果如下所示...4、由于示例中的Jenkins服务是部署在Linux系统中,故此处可添加一台Windows主机(10.0.0.148)作为C#项目编译运行环境,在Windows从节点配置中,添加并配置相应工具,如下图所示...解决方法: 登录从节点10.0.0.148(windows主机),右击我的电脑选择管理然后从管理界面里面找到服务或者在cmd界面输入services.msc打开服务管理界面,从服务管理界面找到jenkins

    5.5K31

    远控免杀从入门到实践——工具总结篇

    从 Mono2.11 版本开始,采用的编译器叫 mcs,它的作用是将 C# 编译为 CIL(Common Language Infrastructure,通用中间语言,也叫 MSIL 微软中间语言,这个语言能运行在所有支持...通过在项目或解决方案文件中调用 msbuild.exe,可以在未安装 Visual Studio 的环境中编译和生成程序。...nps_payload 只是使用了白名单 msbuild.exe 方法,nps_payload 还对生成的文件进行了混淆处理,使用非常简单,免杀效果也是不错的。...2、Msbuild.exe:Microsoft Build Engine 是一个用于构建应用程序的平台。这个引擎,也称为 MSBuild。...生成基于白名单 Msbuild.exe 的文件,virustotal.com 上 payload.xml 文件查杀率为 14/56 生成单个可执行 payload.exe 文件,virustotal.com

    4K21

    dll 劫持和应用

    taskhostsvc.exe 启动后通过创建互斥体保证只有一个实例在运行,然后每秒从进程中搜索 MsBuild.exe 进程(Microsoft Build Engine),找到后通过读取 MsBuild.exe...APT 攻击中上文中的植入过程不够完美,比如计划任务和周期性的进程扫描很容易暴露攻击行为,其次监控 MsBuild.exe 运行到最终替换源码文件,这中间的执行时间可能影响后门植入的成功率。...MSBuild.exe 启动过程中会去优先加载指定目录的 dll,如下: [2.MSBuild优先加载的部分dll文件(ref:https://www.a12d404.net/ranting/2021...5 路径劫持 根据以上知识,我们可以自由的生成恶意 dll 文件,并且通过函数转发使其调用原始的 dll 函数,完全不会影响应用程序的正常运行。...2.公共dll 当然我们还可以对公共 dll 进行劫持(比如系统 dll user32.dll),但是公共 dll 一般都会提前被其他进程加载,当新的应用程序需要加载时,将直接从内存进行加载和调用,如果我们使用恶意

    78430

    保护力度不够的Microsoft SQL数据库正成为黑客攻击的目标

    可以观察到,攻击者部署了可以访问服务器的加密货币挖矿工具,如Lemon Duck、KingMiner和Vollgar。...如果攻击者通过这些进程成功登录admin帐户,他们会使用xp_cmdshell命令在受感染的系统中执行。...安博士最新发表的ASEC分析报告写道:“最近发现的Cobalt Strike是通过如下所示的MS-SQL进程通过cmd.exe和powershell.exe下载的。”...在MSBuild.exe中执行的Cobalt Strike有一个额外的设置选项可以绕过安全产品的检测,在这里,它加载普通的dll wwanmm.dll,然后在dll的内存区域中写入并执行一个信标。”...“因为接收攻击者命令并执行恶意行为的信标并不存在于可疑的内存区域,而是在正常的模块wwanmm.dll中运行,所以它可以绕过基于内存的检测。”

    37110

    MSBuild后门技术分析

    CrowdStrike的博客文章是一位同事介绍给我的。SUNBURST的开发人员会尝试每秒都去搜索MSBuild.exe进程,然后读取这些远程进程中的虚拟内存来确定现在构建的是否是正确的解决方案。...运行任意解决方案的快速构建后(比如说使用C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe SomeProject.sln /t:Build...PoC将用PureBasic编写,因为没有一个正常的攻击者会在其中实现他的植入,因此不需要考虑复制粘贴这个源代码;-) 目标分析 注入的代码应具有以下特征: 没有其他正在运行的进程; 无远程进程操作(读取.../写入远程进程内存等); 生成正确解决方案的唯一触发器; 在生成过程中插入后门 在生成过程之后删除后门源文件; 目标实现 正如我们前面看到的,VERSION.dll文件很早就由.NET运行时加载了。...总结 通过将我们的VERSION.dll拷贝到MSBuild目录下,我们可以更好地确保操作的安全性,因为不需要创建额外的进程,可以省略内存搜索并捕获每一次的构建操作,因为我们的代码是由MSBuild直接执行的

    78110

    利用github actions进行自动化开发

    光这么说,可能确实有点迷茫,那我拿开发写代码来举个例子: 小明开发一套程序,需要利用IDE开发,开发好进行调试,然后放到服务器上运行,再解决服务器上的兼容问题,最终查看程序运行一段时间以后的稳定性。...\MSBuild.exe $Env:GITHUB_WORKSPACE\juicy-potato\JuicyPotato\JuicyPotato.sln 上述代码主要意思是同步所有git代码,然后利用warrenbuckley...看提示是找不到sdk 8.1,根据搜索,发现vs2019默认不带这玩意,可以利用powershell安装,因此我们可以在编译的过程中加个安装sdk 8.1的方法: - name: Install Windows...actions/upload-release-asset模块发布的时候,需要是压缩包,因此这里使用powershell把生成的exe压缩一下,再丢给actions/upload-release-asset...\MSBuild.exe $Env:GITHUB_WORKSPACE\juicy-potato\JuicyPotato\JuicyPotato.sln - uses: actions/upload-artifact

    1.2K30

    使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数

    参数可以看到它对响应文件的解释: > dotnet build /? # 省略了一部分输出,只保留响应文件相关的两个。 @ 从文本文件插入命令行设置。...自动从以下位置使用任何名为 "msbuild.rsp" 的 响应文件: (1) msbuild.exe 的目录...(2) 生成的第一个项目或解决方案的目录 /noautoresponse 不自动包括任何 MSBuild.rsp 文件。...(缩写: /noautorsp) 当然,使用 dotnet msbuild 或者直接使用 msbuild.exe 都是一样的具备此功能。...时,将执行这些事情: 使用 Release 配置进行编译 当前计算机有多少 CPU 核,就使用多少个进程进行并行编译 NuGet 包打包版本设置为 1.6.0-beta(这将覆盖 csproj 中设置的

    1.6K20

    CMake构建学习笔记14-依赖库管理工具

    如果头文件错了,你会发现无法编译;如果动态库导入库错误,你会发现无法链接;如果动态库不正确,你会发现无法运行。 最后开始在源代码中include头文件,调用依赖库相关的功能进行操作。...不能使用CMake的GUI工具,因为不同的库各自有自己独特的构建选项,最好将其通过脚本记录。不妨将构建的脚本写的完善一点,自动化一点,代码文件从哪里来,最后的构建成果输出到哪里。...} 再次感叹下Powershell脚本的强大,你甚至可以看到System.Collections.Generic.SortedSet,没错,这就是.Net提供的容器,通过Powershell可以也调用它...Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" ` -InstallDir "$env:GISBasic" ` -SymbolDir...Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" ` -InstallDir "$env:GISBasic" ` -SymbolDir

    10410

    “白象”APT组织近期动态

    5. sct脚本解密后会调用Powershell下载并运行putty.exe和自动加载Strategic_Chain.pdf,让用户误以为已经打开相关文档成功。 ? 6....其中VMwareCplLauncher.exe为具有合法数字签名的文件,vmtools.dll为经过篡改的dll,用于最终加载BADNEWS的最新变种MSBuild.exe。...VMwareCplLauncher.exe运行后,会自动加载vmtools.dll,vmtools.dll执行后会创建一个名为BaiduUpdateTask1的任务计划,该任务计划每隔一分钟会执行一次MSBuild.exe...MSBuild.exe执行后,会下载 hxxps://raw.githubusercontent.com/husngilgit/husnahazrt/master/xml.xml ?...目前该组织已经成长为有较高攻击能力的小分队,且使用的漏洞的手法也比较新颖,对社会工程学的把捏相当的精妙,这从近期多起攻击事件中就可以看出。

    1.5K40

    找出 .NET Core SDK 是否使用预览版的全局配置文件在哪里(探索篇)

    ) 设置过滤规则 在工具栏上点击“设置过滤器”,然后,添加我们感兴趣的两个进程名称: devenv.exe MSBuild.exe 前者是 Visual Studio 的进程名,后者是 MSBuild.exe...我们使用这两个进程名称分别找到 Visual Studio 2019 是如何设置全局 .NET Core 预览配置的,并且在命令行中运行 MSBuild.exe 来验证确实是这个全局配置。...你可以注意到左侧的时间,我的截图中从 45 秒到 48 秒是可能有效的文件读写,再后面已经延迟了 10 秒了,多半是其他的操作。...捕获 MSBuild.exe 现在,我们清除一下 Process Monitor 中的已经记录的数据,然后,我们在命令行中对一个项目敲下 msbuild 命令。...验证结论 要验证此文件确实是全局配置其实也很简单,自行改一改配置,然后使用 MSBuild.exe 编译试试即可。

    26030

    Lazarus APT攻击手法之利用Build Events特性执行代码复现

    绿盟科技 https://mp.weixin.qq.com/s/7RwH5_h1rGn3MxGIngal6A 从绿盟科技的文章中我们可以知道事件的背景和一些信息。...这里简单复现一下,就不讨论宏代码的一个情况了。 在cobalt strike种直接生成powershell的恶意脚本。 ? 把命令放在visual studio中 ? 应用然后编译 ?...不难理解,MSBuild可以在未安装Visual Studio的环境中编排和构建产品(可以简单理解为执行可以代码),而且Visual Studio使用MSBuild加载和生成托管项目。...我们去微软中下载msbuild.exe 当然在.net中我们也能查找到 ?...利用起来也不难 在MSF中可以直接生成利用代码 我们使用Microsoft VisualStudio创建以MSBuild格式保存的、带有*.csproj后缀的C#代码,以便可以使用MSBuild平台将其编译为可执行程序

    1.3K10

    .net持续集成sonarqube篇之sonarqube安装与基本配置

    下载完成全将下载的压缩包解压,进入bin目录,可以看到这个目录下有数个文件夹,从文件夹的名称很容易看出它们对应的是windows,mac,linux平台下的启动目录,由于我们是在windows平台下运行的...同样,为了方便使用,我们也需要把msbuild.exe添加到环境变量中,如果你的系统中安装的visual Studio开发工具,则Visual studio中会自动包含一个msbuild.exe我们找到它的路径添加到系统环境变量...,定位到usage栏,可以看到有一个简短的示例代码如下 SonarScanner.MSBuild.exe begin /k:"project-key" MSBuild.exe /t:Rebuild SonarScanner.MSBuild.exe.../k:"mygetdata" /v:"1.0" MSBuild.exe /t:Rebuild SonarScanner.MSBuild.exe end 第二段是执行msbuild,第三段是一个结束标志...从图中我们可以看到我们刚才创建的key 为mygetdata的构建了,从图中可以简要的看到此项目的严重bug,一般bug,代码不规范,代码单元测试覆盖率,代码重复度,代码最后一次分析时间等.

    1.7K40
    领券