Public/Functions/Block.ps1
function Block-AdminUser { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires non-Admin Rights" if ((Get-OSDGather -Property IsAdmin) -eq $true) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-ManufacturerNeLenovo { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires a Lenovo computer" if ((Get-MyComputerManufacturer -Brief) -ne 'Lenovo') { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-NoCurl { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires curl.exe" if (-NOT (Test-Path "$env:SystemRoot\System32\curl.exe")) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-NoInternet { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires Internet access" $TestURLs = @('google.com','github.com','nvidia.com','apple.com') foreach ($URL in $TestURLs){ if (Test-WebConnection -Uri $URL){ $Success = $true break } else { $Success = $false } } if ($Success -eq $false) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-PowerShellVersionLt5 { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires PowerShell version 5 or greater" if ($PSVersionTable.PSVersion.Major -lt 5) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-PSModuleNotInstalled { [CmdletBinding()] param ( [string]$ModuleName = 'OSD', [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires PowerShell Module $ModuleName to be installed" if (-not (Get-Module -ListAvailable -Name $ModuleName)) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-StandardUser { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires Admin Rights" if ((Get-OSDGather -Property IsAdmin) -eq $false) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-WindowsReleaseIdLt1703 { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires Windows ReleaseId of 1703 or greater" if ((Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId -lt 1703) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-WindowsVersionNe10 { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires Windows with a Major version 10 or greater" if ([System.Environment]::OSVersion.Version.Major -ne 10) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-WinOS { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction requires WinPE" if (-NOT (Get-OSDGather -Property IsWinPE)) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } function Block-WinPE { [CmdletBinding()] param ( [System.Management.Automation.SwitchParameter]$Warn, [System.Management.Automation.SwitchParameter]$Pause ) $CallingFunction = (Get-PSCallStack)[1].InvocationInfo.Line $Message = "[$((Get-Date).ToString('yyyy-MM-dd-HHmmss'))] $CallingFunction cannot be run from WinPE" if ((Get-OSDGather -Property IsWinPE)) { Write-Warning $Message if ($PSBoundParameters.ContainsKey('Pause')) { [void]('Press Enter to Continue') } if (-NOT ($PSBoundParameters.ContainsKey('Warn'))) { Break } } } |