> For the complete documentation index, see [llms.txt](https://osd.osdeploy.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://osd.osdeploy.com/docs/trash/block.md).

# Block

Block functions are used to take the place of different stops that I place in my scripts

![](/files/-MWV-zlxlJEMglCBVUZI)

## Example

For example, I have a function that needs the following requirements

* Runs in Full OS, not WinPE
* Requires Admin Rights
* Requires Curl.exe

In my code,  I' would do something like this

```
    #=======================================================================
    #	Require WinOS
    #=======================================================================
    if ((Get-OSDGather -Property IsWinPE)) {
        Write-Warning "$($MyInvocation.MyCommand) cannot be run from WinPE"
        Break
    }
    #=======================================================================
    #   Require Admin Rights
    #=======================================================================
    if ((Get-OSDGather -Property IsAdmin) -eq $false) {
        Write-Warning "$($MyInvocation.MyCommand) requires Admin Rights ELEVATED"
        Break
    }
    #=======================================================================
    #   Require cURL
    #=======================================================================
    if (-NOT (Test-Path "$env:SystemRoot\System32\curl.exe")) {
        Write-Warning "$($MyInvocation.MyCommand) could not find $env:SystemRoot\System32\curl.exe"
        Write-Warning "Get a newer Windows version!"
        Break
    }
    #=======================================================================
```

By taking these Blocks into separate functions, I can easily add this to my PowerShell script and greatly simplify things as well as ensuring consistency

```
Import-Module OSD
Block-WinPE
Block-StandardUser
Block-NoCurl
```

## Real World Example

In the real world, I have a function that has these blocks in place

![](/files/-MWUzKFseiHD-lEbN9wq)

And when running the function in PowerShell as a Standard User, I receive the following:

![](/files/-MWUz0zcxoXrKPvvw_nf)

## The Code

This is what the code of a Block will do.  By default, a Warning with a Timestamp and calling Function will be displayed, followed by a Break.  These can be adjusted with two Parameters

#### -Warn

Provides a Warning without a Break

#### -Pause

Adds a Press Any Key to continue

![](/files/-MWV-I8hSj2gqzPjGFXF)
