Я написал обширный сценарий, который проходит процесс завершения AD, и скрипт может получить необходимую информацию из CSV. Как я могу сделать это так, чтобы он ошибся, если запись пуста в CSV? Я попытался вставить Try-Catch, If-Else, все, что я знаю, как это сделать. Я попытался изменить действие с ошибкой, и я могу заставить его сбросить системные ошибки (например, «Невозможно связать параметр« Идентичность »с целевым ...»), но я не могу заставить его делать то, что я хочу. Пожалуйста, смотрите пример кода ниже:Powershell: Как выбросить ошибку, если запись CSV пуста
(Да, я знаю, что я дублирующие значения Это значение позже в сценарии, а не часть меня возникли проблемы с.)
$owner = $user.'Network User ID'}
$loginID = $user.'Network User ID'
$Identity = Get-ADUser -Identity $owner -Properties Displayname |Select-Object -ExpandProperty Displayname
$manager = $user.'Provide Inbox Access To'
$NewOwner = $user.'Provide users email group ownership to'
$NewOwnerID = $User.'Provide users email group ownership To'
То, что мне нужно, это выбросить ошибку, если ЛЮБАЯ запись в CSV пуста и завершена. Наиболее перспективной идеей, которую я пробовал, было:
If ($Owner -eq $Null)
{
Write-Host "Invalid entry, the Network User ID field cannot be blank"
Write-Host "Press Enter to Exit..."
Exit
}
Else
{
#Do everything else
}
Но даже это все еще не удается.
Таким образом, мне нужно сделать сброс пользовательской завершающей ошибки, если запись в CSV пуста.
Любая помощь очень ценится!
EDIT
Если это помогает, здесь больше реального кода ...
$Confirmation = Read-Host "Please double check the information in the file. Are you sure you want to continue? (Y/N)"
If($Confirmation -eq "Y")
{
Write-Host "You have chosen to proceed. Processing Termination" -BackgroundColor DarkCyan
#Import file
$file = "C:\TerminateUsers.csv"
$data = Import-Csv $file
#Set disabled OU
$disabledOU = "OU=Users,OU=Disabled Accounts, OU=Corporate"
$colOutput = @()
foreach ($user in $data)
{
#Grab variables from CSV
$owner = $user.'Terminated Network User ID'}
$loginID = $user.'Terminated Network User ID'
#Displayname required for Outlook functions
$Identity = Get-ADUser -Identity $owner -Properties Displayname |Select-Object -ExpandProperty Displayname
$manager = $user.'Provide Inbox Access To'
$NewOwner = $user.'Provide users email group ownership to'
$NewOwnerID = $User.'Provide users email group ownership To'
If (Get-ADUser -LDAPFilter "(sAMAccountName=$loginID)")
{
$date = Get-Date -Format d
#Disable account, change description, disable dialin, remove group memberships
Set-ADUser -Identity $loginID -Enabled $false
Set-ADUser -Identity $loginID -Replace @{Description = "Terminated $date"}
Set-ADUser -Identity $loginID -Replace @{msNPAllowDialin = $False}
RemoveMemberships $loginID
Это не все это, но это часть мы работаем с .. .
Я также хотел бы отметить, что я попытался просто запустить инструкции if-else и try-catch без остальной части скрипта, просто запустив этот блок на отдельной вкладке. Это все еще не работает. – Nick