How about something like this (minus all the irrelevant forms coding)?
function Set-OSDComputerName {
$ErrorProvider.Clear()
if ($TBComputerName.Text.Length -eq 0) {
$ErrorProvider.SetError($GBComputerName, "Please enter a computer name")
}
else {
if ($TBComputerName.Text.Length -gt 7) {
$ErrorProvider.SetError($GBComputerName, "Computer name cannot be more than 6 characters")
}
else {
if ($TBComputerName.Text -notmatch '^[F][0-9]{2,2}[a-zA-Z]{4,4}$') {
$ErrorProvider.SetError($GBComputerName, "Computer name must be named with <F> and <numbers> and <four random letters>")
}
else {
$OSDComputerName = $TBComputerName.Text -replace "[\[\]:;|=+*?<>\/,]+", ''
if (Test-Path "C:\SomeDirectory\$OSDComputerName") {
$ErrorProvider.SetError($GBComputerName, "Computer name already exists. Choose another name")
}
else {
New-Item -Path "C:\SomeDirectory\$OSDComputerName" -ItemType File
}
$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment
$TSEnv.Value("OSDComputerName") = "$($OSDComputerName)"
$Form.Close()
}
}
}
}