2016-08-29 9 views
0

Я написал пример программы, которая будет писать Hello World и создал NSIS файл и казнили, который отлично работает для меняNSIS модуль PowerShell импорта с параметрами

Мой .nsi сценарий выглядит следующим образом

!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 

Который является печать записывающий хост согласно написанному, когда я его выполнил

Мой код в .psm1 файл

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

Сейчас я пытаюсь добиться того же с параметрами, может кто-нибудь помочь мне

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

ответ

0

Вместо модуля, как об использовании простого скрипта?

C:\PowerShell\script1.ps1 В:

param([string]$TestParam) 

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

А потом в nsi:

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

Но шахта модуля файл, так как я могу это сделать – Dotnet

+0

Не работал, когда я делаю это как сценарий к execute, '" ImportModules ": Import-Module: Невозможно найти параметр, который соответствует имени параметра 'TestParam'. В строке: 1 char: 58 + ... rt-Module C: \ PowerShell \ TestParameter.ps1 -TestParam Hello-W ... + ~~~~~~~~~~ + Категория: InvalidArgument: (:) [Import-Module], ParameterB indingException + FullyQualifiedErrorId: NamedParameterNotFound, Microsoft.PowerShell.Comm ands.ImportModuleCommand Завершена ' – Dotnet

+0

@Dotnet не используйте' Import-module' командлет, я намеренно удалил его из примера в моем ответе –