У меня есть сценарий со многими другими источниками сценариев. Каждый сценарий имеет функцию.
Одна из моих функций должна быть остановлена в соответствии с оператором if. Я пытался продолжить, разбить, выбросить, все, что видел в Интернете, но либо мой основной сценарий полностью завершился, либо моя функция продолжилась.
Код функции:
function AutoIndus-DeployUser($path){
$yaml=Get-Content $path | ?{!$_.StartsWith("#")}
$UsersPwd=$false
$user="";$password="";$groups="";$description=""; $options=""
$yaml | %{
if (($_-match "}") -and ($UsersPwd -eq $true)){Write-Host "function should stop"; return}
*actions*
}
}
Основной скрипт:
#functions list and link to extern scripts
Get-ChildItem -Path $PSScriptRoot\functions\ | %{$script=$_.Name; . $PSScriptRoot\functions\$script}
myfunction-doesnotwork
*some code*
Редактировать: Я видел, что return
должен остановить функцию, не останавливая остальную часть скрипта, к сожалению, она вообще ничего не останавливает:
Выход:
Config file found
---
Changing user _usr-dba password
Changing user _usr-dba2 password
function should stop
Changing user _usr-dba3 password
function should stop
function should stop
function should stop
function should stop
function should stop
Disabling user DisableAccounts:{
Disable-LocalUser : User DisableAccounts:{ was not found.
At C:\Scripts\AWL-MS-AUTOMATION_AND_TOOLS\functions\AutoIndus-DisableAccount.ps1:25 char:13
+ Disable-LocalUser -Name $disable
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (DisableAccounts:{:String) [Disable-LocalUser], UserNotFoundException
+ FullyQualifiedErrorId : UserNotFound,Microsoft.PowerShell.Commands.DisableLocalUserCommand
Disabling user _usr-dba
Чтобы помочь вам понять, мой скрипт читает файл и выполняет действия в соответствии с каждой строкой, которую он читает. Он начинает действовать, когда сталкивается с чем-то вроде User{
, и должен останавливаться, когда сталкивается с }
, когда _usr-dba3 выходит за рамки пышных скобок, с ним не следует обращаться Таким образом, все мои другие функции используют один и тот же файл. (изменение пароля пользователя и отключение пользователя - это две разные функции / скрипты из источника)
Как вы видите, возврат не выполняет свою работу, возможно, мне не хватает одного пункта в использовании возврата, но я не получаю его прямо сейчас.