# Defaults to the first module path, however you can change this to any path you wish (provided it's in your $PSModulePath) $ModulePath = $env:PSModulePath.Split(";")[0] if (-NOT (Test-Path $ModulePath)) { $null = New-Item -Path $ModulePath -ItemType Directory } # Create the module path if it doesn't exist (might happen on brand new installs) $RequiredModules = @("Microsoft.PowerShell.SecretStore","Microsoft.PowerShell.SecretManagement").Where{ -NOT (Get-Module $_ -ListAvailable) -as [bool] } $RequiredModules.ForEach{Install-Module $_ } $GitURI = "https://git.wnd.sh/n/PSGraylog/archive/main.zip" $OutputPath = "$ModulePath/PSGraylog" Invoke-WebRequest $GitURI -OutFile "$OutputPath.zip" # Download the zip archive to the module path Expand-Archive "$OutputPath.zip" $OutputPath # Extract the zip archive to the module path Move-Item "$OutputPath/PSGraylog/*" $OutputPath # The archive nests the files, so we need to move the up a level Remove-Item "$OutputPath/PSGraylog" # Remove the excess PSGraylog directory (it's empty) Remove-Item "$OutputPath.zip" # Remove the archive