netmaker/scripts/netclient-install.ps1

73 lines
3.3 KiB
PowerShell
Raw Normal View History

2021-11-17 12:44:26 +08:00
new-module -name netclient-install -scriptblock {
function Quit {
param(
$Text
)
Write-Host "Exiting: " $Text
Break Script
}
Function Netclient-Install() {
param ($version='latest', $token)
2021-11-16 04:02:07 +08:00
2021-11-17 12:44:26 +08:00
if($token -eq $null -or $token -eq ""){
Quit "-token required"
}
2021-11-16 04:02:07 +08:00
$software = "WireGuard";
$installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
2021-11-17 12:44:26 +08:00
2021-11-16 04:02:07 +08:00
If(-Not $installed) {
2021-11-17 12:44:26 +08:00
Write-Host "'$software' is NOT installed. installing...";
$url = "https://download.wireguard.com/windows-client/wireguard-installer.exe"
$outpath = "$env:userprofile\Downloads\wireguard-installer.exe"
Invoke-WebRequest -Uri $url -OutFile $outpath
$args = @("Comma","Separated","Arguments")
Start-Process -Filepath "$env:userprofile\Downloads\wireguard-installer.exe" -ArgumentList $args
Start-Sleep -Seconds 5
$software = "WireGuard";
$installed = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where { $_.DisplayName -eq $software }) -ne $null
If(-Not $installed) {
Quit "Could not install WireGuard"
} else {
Write-Host "'$software' is installed."
}
2021-11-16 04:02:07 +08:00
} else {
Write-Host "'$software' is installed."
}
2021-11-17 12:44:26 +08:00
$outpath = "";
if (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe") {
$outpath = "C:\ProgramData\Netclient\bin\netclient.exe";
} else {
$outpath = "$env:userprofile\Downloads\netclient.exe"
Write-Host "'netclient.exe' is NOT installed. installing...";
Write-Host "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe";
$url = "https://github.com/gravitl/netmaker/releases/download/$version/netclient.exe"
Invoke-WebRequest -Uri $url -OutFile $outpath
}
$NetArgs = @("join","-t",$token)
Start-Process -Filepath $outpath -ArgumentList $NetArgs
Add-MpPreference -ExclusionPath "C:\ProgramData\Netclient"
2021-11-16 04:02:07 +08:00
2021-11-17 12:44:26 +08:00
if ((Get-Command "netclient.exe" -ErrorAction SilentlyContinue) -eq $null) {
if (-not (Test-Path -Path "C:\ProgramData\Netclient\bin\netclient.exe")) {
New-Item -Path "C:\ProgramData\Netclient" -Name "bin" -ItemType "directory"
Move-Item -Path "$env:userprofile\Downloads\netclient.exe" -Destination "C:\ProgramData\Netclient\bin\netclient.exe"
$oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$newpath = "$oldpath;C:\ProgramData\Netclient\bin"
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
$env:Path += ";C:\ProgramData\Netclient\bin"
}
'''
Please add netclient.exe to your path to make it permanently executable from powershell:
1. Open "Edit environment variables for your account"
2. Double click on "Path"
3. On a new line, add the following: C:\ProgramData\Netclient\bin
4. Click "Ok"
'''
2021-11-16 04:02:07 +08:00
}
2021-11-17 12:44:26 +08:00
Write-Host "'netclient' is installed."
}
}