Vinnaren i pepparkakshustävlingen!
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

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback