2013-09-27 186 views
20

Trước khi nhập mô-đun PowerShell tôi (MyModule.psm1), tôi đã viết một hàm trong nó:Powershell: Chỉnh sửa một mô-đun đã nhập khẩu

Function T1() 
{ 
    Write-Host "T1 is just called" -ForegroundColor red 
} 

Trong tôi MyModule.psd1:

@{ 

    # Minimum version of the Windows PowerShell engine required by this module 
    PowerShellVersion = '2.0' 

    # Name of the Windows PowerShell host required by this module 
    PowerShellHostName = '' 

    # Minimum version of the Windows PowerShell host required by this module 
    PowerShellHostVersion = '2.0' 

    # Modules that must be imported into the global environment prior to importing this module 
    RequiredModules = @() 

    # Script files (.ps1) that are run in the caller's environment prior to importing this module 
    ScriptsToProcess = @() 

    # Modules to import as nested modules of the module specified in ModuleToProcess 
    NestedModules = @() 

    # Functions to export from this module 
    FunctionsToExport = '*' 

    # Cmdlets to export from this module 
    CmdletsToExport = '*' 

    # Variables to export from this module 
    VariablesToExport = '*' 

    # List of all modules packaged with this module 
    ModuleList = @() 

    # List of all files packaged with this module 
    FileList = @() 

} 

này được nhập khẩu tốt, khi tôi đã sao chép cả hai tệp trong:

C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule

và tôi có thể chạy T1 trong phiên họp quyền hạn của mình.

Nhưng bây giờ tôi muốn thêm một chức năng mới trong cùng một mô-đun tức là .:

Function T2() 
{ 
    Write-Host "Its now T2.." -ForegroundColor red 
} 

Ngay cả sau khi khởi động lại phiên Powershell của tôi, nó không bao giờ nhận ra T2, tuy nhiên T1 vẫn còn làm việc.

Làm thế nào tôi có thể chỉnh sửa mô-đun của tôi đã nhập khẩu như rằng những thay đổi có sẵn ngay lập tức ...

Cảm ơn bó ...

+2

'mô-đun nhập khẩu mymodule-force' là không đủ? –

+0

Đã cố gắng đó là tốt, nhưng vô ích .. :( –

+0

Cảm ơn bạn thân ... Chỉ cần loại bỏ các mô-đun, nhập khẩu một lần nữa và thử với "nhập khẩu-mô-đun MyModule-lực lượng" Và nó làm việc bằng cách thêm 4 chức năng hơn .. –

Trả lời

22

Khi một mô-đun đã được nhập khẩu, thay đổi để nó không được công nhận kể từ khi module được tải vào bộ nhớ. Tuy nhiên, tôi luôn có thể thực hiện Remove-Module foo, theo sau là Import-Module foo để tải các chức năng mới.

Tất cả những gì đã nói, tệp PSD1 của bạn trông không ổn. Trường phải có trường ModuleToProcess được đặt thành 'MyModule.psm1'. Sau đó, khi bạn thực hiện Import-Module MyModule hoặc Import-Module .\mymodule.psd1, PowerShell sẽ tìm thấy & tải tệp MyModule.psm1 được liên kết. Tôi tự hỏi nếu đó là gây ra cho bạn để chạy afoul của một số bộ nhớ đệm PowerShell không?

+0

Keith, tôi chỉ đăng một phần tệp psd1 đang thiết lập phương thức xuất, nó có ModuleToProcess, hoặc nó sẽ không thể nhập tập lệnh mô-đun của tôi, đúng không? –

+1

Đó là loại đúng. Bạn phải có mà nhập vào để tải PSM1 khi PSD1 của bạn được nhập khẩu.Tuy nhiên, bạn có thể nhập khẩu-mô-đun mymodule.psm1 mà bỏ qua PSD1 của bạn.Tôi khá chắc chắn mặc dù nếu bạn nhập khẩu mô-đun mymodule nó sẽ xử lý PSD1 mà sau đó sẽ hướng dẫn PowerShell MyModule.psm1 cần được tải. –

34

Sử dụng lệnh -Force với Import-Module và sẽ tải lại.