103 строки
2.8 KiB
PowerShell
103 строки
2.8 KiB
PowerShell
# Copyright (c) Microsoft Corporation
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
##
|
|
## Initialize parameters
|
|
##
|
|
$build_directory=".\x64\Debug"
|
|
[System.Collections.ArrayList]$built_files=@( "EbpfCore.sys", "EbpfApi.dll", "ebpfnetsh.dll", "ebpfsvc.exe", "NetEbpfExt.sys" )
|
|
$destination_directory="C:\Temp"
|
|
$error.clear()
|
|
$vm="Windows 10 dev environment"
|
|
|
|
##
|
|
## Process command-line options
|
|
##
|
|
foreach ($arg in $args) {
|
|
switch -regex ($arg) {
|
|
{ @("-h", "--help") -contains $_ }
|
|
{
|
|
Write-Host @'
|
|
|
|
OVERVIEW:
|
|
|
|
Copies eBPF framework files into a temp directory on the local machine or into a VM
|
|
|
|
$ deploy-ebpf [-h] [-l] [--vm="..."]
|
|
|
|
OPTIONS:
|
|
-h, --help Print this help message.
|
|
-l, --local Copies files to the local temp directory instead of into a VM
|
|
--vm Specifies the VM name, which defaults to "Windows 10 dev environment"
|
|
|
|
'@
|
|
exit 0
|
|
}
|
|
"--vm=*"
|
|
{
|
|
$vm=($arg -split "=")[1];
|
|
break
|
|
}
|
|
{ @("-l", "--local") -contains $_ }
|
|
{
|
|
Clear-Variable -name vm
|
|
break
|
|
}
|
|
default
|
|
{
|
|
Write-Error "unknown option: $arg"
|
|
exit 1
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($vm -eq $null) {
|
|
Write-Host "Copying files from `"$build_directory`" to `"$destination_directory`""
|
|
|
|
foreach ( $file in $built_files ) {
|
|
$source_path = "$build_directory\$file"
|
|
$destination_path = "$destination_directory\$file"
|
|
Write-Host " $file"
|
|
Copy-Item "$source_path" -Destination "$destination_path"
|
|
if (! $?) {
|
|
exit 1
|
|
}
|
|
}
|
|
Write-Host " install-ebpf.bat"
|
|
Copy-Item ".\scripts\install-ebpf.bat" -Destination "$destination_directory\install-ebpf.bat"
|
|
if (! $?) {
|
|
exit 1
|
|
}
|
|
exit 0
|
|
}
|
|
|
|
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
|
$principal = New-Object Security.Principal.WindowsPrincipal $identity
|
|
if (! $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {
|
|
Write-Host "This command must be run as Administrator to deploy files into a VM"
|
|
exit 1
|
|
}
|
|
|
|
Enable-VMIntegrationService -VMName "Windows 10 dev environment" -Name "Guest Service Interface"
|
|
if (! $?) {
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "Copying files from `"$build_directory`" to `"$destination_directory`" in VM `"$vm`"..."
|
|
|
|
foreach ( $file in $built_files ) {
|
|
$source_path = "$build_directory\$file"
|
|
$destination_path = "$destination_directory\$file"
|
|
Write-Host " $file"
|
|
Copy-VMFile "$vm" -SourcePath "$source_path" -DestinationPath "$destination_path" -CreateFullPath -FileSource Host -Force
|
|
if (! $?) {
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
Write-Host " install-ebpf.bat"
|
|
Copy-VMFile "$vm" -SourcePath ".\scripts\install-ebpf.bat" -DestinationPath "$destination_directory\install-ebpf.bat" -CreateFullPath -FileSource Host -Force
|
|
if (! $?) {
|
|
exit 1
|
|
}
|