2016-08-29 2 views
0

ich ein Beispielprogramm geschrieben haben, die Hello World und erstellt NSIS Datei schreiben wird und ausgeführt, die gut für mich funktioniertNSIS Import Powershell-Modul mit Parametern

Mein .nsi Skript geht als

!include "x64.nsh" 

Name "nsExec Test" 
OutFile "nsExecTest.exe" 
#ShowInstDetails show 

Section "Output to variable" 
nsExec::ExecToStack 'powershell.exe "& "Import-Module C:\PowerShell\Hello.psm1"' 
Pop $0 
Pop $1 
DetailPrint '"ImportModules" printed: $1' 
SectionEnd 

folgt dem das Drucken der Schreib-Host wie geschrieben, wenn ich es ausgeführt habe

Mein Code in .psm1 Datei

Jetzt
# Filename: Hello.psm1 
Write-Host 
Write-Host 'Hello World!' 
Write-Host "Good-bye World! `n" 
# end of script 

ich das gleiche mit den Parametern zu erreichen versuche, kann mir jemand

# Filename: TestParameter.psm1 
function TestParam([string] $TestParam) 
{ 
    Write-Host 
    Write-Host '$TestParam' 
    Write-Host "Good-bye $TestParam! `n" 
} 
# end of script 

Antwort

0

Statt eines Moduls helfen, wie etwa ein einfaches Skript?

In C:\PowerShell\script1.ps1:

param([string]$TestParam) 

Write-Host 
Write-Host '$TestParam' 
Write-Host "Good-bye $TestParam! `n" 

Und dann in der nsi:

nsExec::ExecToStack 'powershell.exe "& "C:\PowerShell\script.ps1 -TestParam myString"' 
+0

Aber mir ist Modul-Datei, so wie kann ich tun, dass – Dotnet

+0

nicht funktionierte, als ich es als Skript machen execute, '" ImportModules "ausgedruckt: Import-Modul: Es wurde kein Parameter gefunden, der dem Parameternamen 'TestParam' entspricht. Bei Zeile: 1 Zeichen: 58 + ... rt-Modul C: \ PowerShell \ TestParameter.ps1 -TestParam Hallo-W ... + ~~~~~~~~~ + CategoryInfo: InvalidArgument: (:) [Import-Module], ParameterB indingException + FullyQualifiedErrorId: NamedParameterNotFound, Microsoft.PowerShell.Comm ands.ImportModuleCommand Completed ' – Dotnet

+0

@Dotnet sie nicht das' Import-Module' Cmdlets verwenden, entfernte ich es absichtlich aus dem Beispiel in meiner Antwort –