2022-01-27, 13:20
  #1
Medlem
Hi!
Har en liten app jag bygger där jag vill starta powershell precis som jag startar ExchangeMAnagementShell via min genväg, fast nu genom koden i appen. Får inte till det.

Genvägen:
Kod:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell "

C#:
Kod:
var ps1File = @"'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'";

var startInfo = new ProcessStartInfo()
{
       FileName = "powershell.exe",
       Arguments = $"-noexit -command . \"{ps1File}\"; Connect-ExchangeServer -auto -ClientApplication:ManagementShell ",
       //UseShellExecute = false
};
Process.Start(startInfo);

Vad gör jag för fel?

* När jag fått detta att fungera och den öppnar precis som genvägen, så önskar jag skrivare en rad där "Enable-RemoteMailbox osv"
Citera
2022-01-27, 13:26
  #2
Medlem
z0rkeepers avatar
I ditt C# exempel saknar du pathen till powershell.exe, C:\Windows\System32\WindowsPowerShell\v1.0\. Kan det vara det som är problemet?
Citera
2022-01-27, 13:37
  #3
Medlem
Nee den startar powershell, men laddar inte
Kod:
 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell
korrekt.
Den verkar fixa
Kod:
powershell.exe -noexit -command
Citera
2022-01-27, 16:26
  #4
Medlem
Tänkte ifall man kanske skulle försöka göra det mer rätt och köra koden i PS via C#

Kod:
                                    using (PowerShell PowerShellInstance = PowerShell.Create())
                                    {
                                        PowerShellInstance.AddCommand("Set-ExecutionPolicy")
                                            .AddParameter("Scope", "CurrentUser")
                                            .AddParameter("ExecutionPolicy", "Bypass");
                                        PowerShellInstance.AddCommand("$SESSION=New-PSSession")
                                            .AddParameter("ConfigurationName", "Microsoft.Exchange")
                                            .AddParameter("ConnectionUri", "http://serveraddress/PowerShell")
                                            .AddParameter("WarningAction", "SilentlyContinue");
                                        PowerShellInstance.AddCommand("Import-PSSession")
                                            .AddArgument("$SESSION")
                                            .AddParameter("WarningAction", "SilentlyContinue");
                                        PowerShellInstance.AddCommand("Enable-RemoteMailbox")
                                            .AddArgument(fullmailaddress)
                                            .AddParameter("PrimarySmtpAddress", fullmailaddress)
                                            .AddParameter("RemoteRoutingAddress", mailnickname + "@domain.mail.onmicrosoft.com")
                                            .AddParameter("DomainController", domaincontroller);
                                        PowerShellInstance.Invoke();
                                    }

Eller är jag ute och simmar?
Citera
2022-01-27, 22:09
  #5
Medlem
JohannesSnajdares avatar
Citat:
Ursprungligen postat av jwradhe
Hi!
Har en liten app jag bygger där jag vill starta powershell precis som jag startar ExchangeMAnagementShell via min genväg, fast nu genom koden i appen. Får inte till det.

Genvägen:
Kod:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell "

C#:
Kod:
var ps1File = @"'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'";

var startInfo = new ProcessStartInfo()
{
       FileName = "powershell.exe",
       Arguments = $"-noexit -command . \"{ps1File}\"; Connect-ExchangeServer -auto -ClientApplication:ManagementShell ",
       //UseShellExecute = false
};
Process.Start(startInfo);

Vad gör jag för fel?

* När jag fått detta att fungera och den öppnar precis som genvägen, så önskar jag skrivare en rad där "Enable-RemoteMailbox osv"

I den kod som funkar är dubbelfnuttarna runt _hela_ -command medan i c# koden är det bara runt sökvägen:

Kod:
-command ". 'C:\ ...'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell "

vs

-command . "'C:\ ...'"; Connect-ExchangeServer -auto -ClientApplication:ManagementShell 
__________________
Senast redigerad av JohannesSnajdare 2022-01-27 kl. 22:11.
Citera
2022-01-28, 10:59
  #6
Medlem
Jag skippar genvägen och försöker genomföra allt i c# istället.
MEn stöter på lite problem, får error som inte säger ett dugg igentligen.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in