New-WebBinding: Die dynamischen Parameter für das Cmdlet können nicht abgerufen werden

8

Wir verwenden Windows 2012 Server R2.

Wir versuchen, die Erstellung von LetsEncrypt-Zertifikaten zu automatisieren. Wir verwenden LetsEncrypt-Win-Simple ( Ссылка ).

Sobald das Zertifikat erstellt wurde (über LetsEncrypt.exe), haben wir ein .bat-Skript, das aufgerufen wird (mit den Flags --script und --scriptparameters). Dadurch wird powershell.exe ausgeführt und versucht, die erforderliche IIS-Bindung zu erstellen. Die Zeile in der .bat-Datei lautet:

%Vor%

Die% 1-4 sind Args, die von LetsEncrypt übergeben werden. Im Powershell-Skript lautet der Befehl, den wir ausführen möchten:

%Vor%

Die Argumente werden in die .bat-Ausgabe übernommen, wenn wir sie ausgeben und sie korrekt angezeigt werden.

Wenn wir die .bat-Datei selbst ausführen, funktioniert sie einwandfrei. Wenn es von LetsEncrypt.exe aufgerufen wird, schlägt es fehl und meldet das folgende Problem:

%Vor%

Ich habe gegoogelt, einige etwas über 32bit vs 64bit Powershell erwähnt, aber ich habe versucht, die verschiedenen powershell.exe verfügbar.

Jeder trifft dieses Problem oder weiß es zu lösen.

Wenn wir .bat direkt von der Befehlszeile aus aufrufen, funktioniert das genauso, als ob es über LetsEncrypt.exe aufgerufen wird. Ein Berechtigungsproblem? Falsche powershell.exe?

    
Dave Quested 13.10.2016, 22:08
quelle

1 Antwort

8

Dieser Teil Ihrer Frage:

  

Ich habe gegoogelt, einige erwähnen etwas über 32bit vs 64bit Powershell

ist schon die halbe Antwort. Einige Befehle werden nicht ordnungsgemäß ausgeführt, wenn die Bissstärke des PowerShell-Prozesses nicht mit der Bitanzahl des Betriebssystems übereinstimmt. Daher müssen Sie powershell.exe ausführen, das sich in diesem %windir%\System32\WindowsPowerShell\v1.0\ -Verzeichnis befindet. Es gibt jedoch ein kleines Problem, das in diesem Dokumentationsthema beschrieben wird:

  

Wenn eine 32-Bit-Anwendung versucht, auf% windir% \ System32 zuzugreifen, wird in den meisten Fällen der Zugriff auf% windir% \ SysWOW64 umgeleitet.

Wenn also ein 32-Bit-Programm auf einem 64-Bit-Betriebssystem %windir%\System32\WindowsPowerShell\v1.0\powershell.exe aufruft, ruft es tatsächlich eine 32-Bit-Version von PowerShell von hier %windir%\SysWOW64\WindowsPowerShell\v1.0\ anstelle von 64-Bit auf. Um tatsächlich 64-Bit-PowerShell von einer 32-Bit-Anwendung aus aufzurufen, müssen Sie diesen Trick anwenden:

  

32-Bit-Anwendungen können auf das systemeigene Systemverzeichnis zugreifen, indem sie% windir% \ Sysnative für% windir% \ System32 ersetzen. WOW64 erkennt Sysnative als einen speziellen Alias, der angibt, dass das Dateisystem den Zugriff nicht umleiten soll.

    
PetSerAl 16.10.2016 23:34
quelle