PowerShell - скрипт 1 вызывает скрипт 2 - как вернуть значение из скрипта 2 в скрипт 1

У меня есть два скрипта PowerShell. Один сценарий вызывает другой сценарий PowerShell с использованием повышенных учетных данных, используяЗапуск процесса.

Но я борюсь с тем, как заставить второй скрипт возвращать выходное значение первому скрипту.

Вот скрипт # 1, который вызывается с помощью script1.psl "отправитель-ф = 10.10.10.10"

function getUser($abc) {

    

    $password = get-content C:\Script\cred.txt| convertto-securestring
    $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "DOMAIN\Username",$password
    $output = start-process powershell -Credential $credentials -ArgumentList '-noexit','-File', 'C:\script\script2.ps1', $abc
    return $output
}

[string]$abc = $args

getUser($abc)

Write-host Output is $output

Когда я выполняю скрипт, вывод

Output is

А вот script2, который выводит желаемое значение в окно cmd, а не возвращает значение в скрипт 1:

$userID = $NULL
$line_array = @()
$multi_array = @()
[hashtable]$my_hash = @{}

foreach ($i in $args) {
   $line_array+= $i.split(" ")
}

foreach ($j in $line_array) {
    $multi_array += ,@($j.split("="))
}

foreach ($k in $multi_array) {
    $my_hash.add($k[0],$k[1])
}

$Sender_IP = $my_hash.Get_Item("sender-ip")





$Win32OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $Sender_IP


$Build = $Win32OS.BuildNumber



if ($Build -ge 6001) {
    $Win32User = Get-WmiObject -Class Win32_UserProfile -ComputerName $Sender_IP
    $Win32User = $Win32User | Sort-Object -Property LastUseTime -Descending
    $LastUser = $Win32User | Select-Object -First 1
    $UserSID = New-Object System.Security.Principal.SecurityIdentifier($LastUser.SID)
    $userId = $UserSID.Translate([System.Security.Principal.NTAccount])
    $userId = $userId.Value
}


elseif ($Build -le 6000) {
    $SysDrv = $Win32OS.SystemDrive
    $SysDrv = $SysDrv.Replace(":","$")
    $ProfDrv = "\\" + $Sender_IP + "\" + $SysDrv
    $ProfLoc = Join-Path -Path $ProfDrv -ChildPath "Documents and Settings"
    $Profiles = Get-ChildItem -Path $ProfLoc
    $LastProf = $Profiles | ForEach-Object -Process {$_.GetFiles("ntuser.dat.LOG")}
    $LastProf = $LastProf | Sort-Object -Property LastWriteTime -Descending | Select-Object -First 1
    $userId = $LastProf.DirectoryName.Replace("$ProfLoc","").Trim("\").ToUpper()
}

else{
    $userId = "Unknown/UserID"
}


# Logic block to return the correct value
if ($userId -ne $NULL) {
    return "userId=" + $userId
}
elseif ($userID -eq $NULL)
{
    return "userId=" + $userId
}

Я готов использовать другие функции и командлеты, но абсолютно необходимо, чтобы сценарий автоматически запускался в режиме повышенных прав, поскольку сторонняя программа вызывает сценарий 1, который вызывает сценарий 2, поэтому сценарию 2 необходимо отправить значение обратно сценарию 1, который идет в стороннюю программу.

(Я разместил обновленный вопрос в вопросе,ProcessStartInfo и Process в PowerShell - ошибка аутентификации).

Ответы на вопрос(1)

Ваш ответ на вопрос