MSBuild.PowerShell
1.0.2
dotnet add package MSBuild.PowerShell --version 1.0.2
NuGet\Install-Package MSBuild.PowerShell -Version 1.0.2
<PackageReference Include="MSBuild.PowerShell" Version="1.0.2" />
<PackageVersion Include="MSBuild.PowerShell" Version="1.0.2" />
<PackageReference Include="MSBuild.PowerShell" />
paket add MSBuild.PowerShell --version 1.0.2
#r "nuget: MSBuild.PowerShell, 1.0.2"
#:package MSBuild.PowerShell@1.0.2
#addin nuget:?package=MSBuild.PowerShell&version=1.0.2
#tool nuget:?package=MSBuild.PowerShell&version=1.0.2
MSBuild.PowerShell
Simplify the process of running your PowerShell code during MSBuild processes.
Features
There are 3 main Using Tasks that can be used to run PowerShell code:
<LocalPowerShellTask>
- Runs a PowerShell script locally on the machine.<RemotePowerShellTask>
- Runs a PowerShell script on a remote machine.<PowerShellTask>
- Runs a PowerShell script either locally or remotely, depending on required parameters passed.
<LocalPowerShellTask>
This example is based off of the class library sample. It shows the following:
- Demonstrates running a PowerShell script locally in the MSBuild process.
- Runs the local example script.
<Target Name="TestLocalPowerShellTask" BeforeTargets="Build">
<Message Text="Running Target 'TestLocalPowerShellTask' before build..." Importance="high" />
<PropertyGroup>
<TestParameters>
TestMSBuildString = "$(Configuration)"
TestString = 'Hello World Test' // Alternatively, use single quotes for strings
TestBoolean = true
TestNumber = 42
</TestParameters>
</PropertyGroup>
<LocalPowerShellTask
ScriptFileName="HelloWorld.ps1"
ScriptFolderPath="$(MSBuildProjectDirectory)" // Root directory of the project
Parameters="$(TestParameters)"
/>
</Target>
Local PowerShell Script Example
# HelloWorld.ps1
param (
[string]$TestMSBuildString,
[string]$TestString,
[string]$TestBoolean,
[string]$TestNumber,
# MSBuild.PowerShell provides $ScriptFolderPath to scripts as $PSScriptRoot is not available
[string]$ScriptFolderPath # You can use this to import modules or other scripts
)
# Load the TestHelper.ps1 module via a relative path
Import-Module "$ScriptFolderPath\modules\TestHelper.ps1"
# Call the TestHelper.ps1 Log function to Write-Information (demonstration purposes)
Log "HelloWorld.ps1 - Hello World from PowerShell!"
Log "HelloWorld.ps1 - TestMSBuildString: $TestMSBuildString"
Log "HelloWorld.ps1 - TestString: $TestString"
Log "HelloWorld.ps1 - TestBoolean: $TestBoolean"
Log "HelloWorld.ps1 - TestNumber: $TestNumber"
Local PowerShell Helper Example
# /modules/TestHelper.ps1
function Log {
param (
[string]$message
)
Write-Information $message
}
Run Locally or Remotely
Parameters vary between <RemotePowerShellTask>
, <PowerShellTask>
and <LocalPowerShellTask>
:
- Remote operations need the parameter
ComputerName
to use PSRemoting for running on the chosen machine. - Standard (not local or remote) needs
RunRemotely
andComputerName
. As it can be either local/remote. - Local operations don't need to specify any additional parameters.
TIP:
RunRemotely
is useful if you need to do a local or remote operation, based on a MSBuild property. <br><br> For example, you have a local and remote publish profile, and you want to use the same target for both. <br><br> You can set<RunRemotely>
in each profile, and the task will run locally or remotely based on the profile.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.2 | 149 | 2/24/2025 |
# Version 1.0.2 Release Notes
Initial public release of the MSBuild.Powershell package.
- Added support for running PowerShell scripts via custom MSBuild tasks.
- Included properties for specifying script file name, remote execution, computer name, parameters, and more.
- Added support for logging script content and passing errors back to the caller.
- Provided constructors for initializing the task with various configurations.
- Included a `.targets` file to automatically import the custom tasks into the user's project.
- Added UsingTasks for Local, Remote, and generic PowerShell script execution.