Скрипт Powershell работает, но не в коде vb.net - PullRequest
1 голос
/ 21 мая 2019

Мне нужно запустить скрипт powershell с vb.net.Я написал его и попробовал в ISE PowerShell и консоли PowerShell, и он работает правильно.

Но когда я пытаюсь использовать его в своем коде vb.net, ничего не происходит.

Сценарийв текстовый файл citrix session от какого-то пользователя.

вот мой сценарий powershell:

$username = 'domain\myusername'
$password = 'mypassword'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Start-Process C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Credential $credential -NoNewWindow -ArgumentList "add-pssnapin citrix*`nGet-BrokerSession -AdminAddress 'ipadresshere' | Out-File -FilePath C:\inetpub\wwwroot\gestusers\ajax\data\arrays.txt"

и вот мой код vb.net:

Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()

        ' open it
        MyRunSpace.Open()

        ' create a pipeline and feed it the script text
        Dim MyPipeline As Pipeline = MyRunSpace.CreatePipeline()

        MyPipeline.Commands.AddScript(scriptText)

        ' add an extra command to transform the script output objects into nicely formatted strings
        ' remove this line to get the actual objects that the script returns. For example, the script
        ' "Get-Process" returns a collection of System.Diagnostics.Process instances.
        MyPipeline.Commands.Add("Out-String")

        ' execute the script
        Dim results As Collection(Of PSObject) = MyPipeline.Invoke()

        ' close the runspace
        MyRunSpace.Close()

        ' convert the script result into a single string
        Dim MyStringBuilder As New StringBuilder()

        For Each obj As PSObject In results
            MyStringBuilder.AppendLine(obj.ToString())
        Next

        ' return the results of the script that has
        ' now been converted to text
        Return MyStringBuilder.ToString()

Когда я пытаюсьиспользовать меньший скрипт, например:

$test = "blablabla"
$test | Out-File -filepath "C:\inetpub\wwwroot\gestusers\ajax\data\arrays.txt"

, он работает, поэтому я не очень понимаю, почему первый скрипт не работает .. если у вас есть предложение, я был бы благодарен

1 Ответ

0 голосов
/ 28 мая 2019

Я наконец нашел решение своей проблемы.Я запускаю свое веб-приложение на сервере IIS, и когда я запускал свой сценарий, это был пользователь по умолчанию «IIS default / application_pool», который запускал его, хотя я указал конкретного пользователя для его запуска, как будто мой сценарий неработа.

Так что я решил войти в параметры моего сервера IIS, и я только что сделал другой app_pool с моим конкретным пользователем.Я поместил свое приложение в этот пул, и теперь оно отлично работает.

Вот как создать определенный пул на IIS Server: https://www.developer.com/net/asp/article.php/2245511/IIS-and-ASPNET-The-Application-Pool.htm

cya

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...