Mar*_*ght 7 powershell powershell-3.0
我有一个脚本,我希望从PowerShell提示符交互使用.该脚本需要使用本地脚本模块.
我无法看到如何导入/使用模块,使其不会在当前会话中被加载.
例
一个模块(MyModule.psm1)......
function Test-Method
{
write-host "Test-Method invoked"
}
Run Code Online (Sandbox Code Playgroud)
...和脚本(script.ps1)
Import-Module .\MyModule
Test-Method
Run Code Online (Sandbox Code Playgroud)
现在在PowerShell提示符下运行脚本...
PS C:\temp> Get-Module | % {$_.Name}
Microsoft.PowerShell.Management
Microsoft.PowerShell.Utility
PS C:\temp> .\script.ps1
Test-Method invoked
PS C:\temp> Get-Module | % {$_.Name}
Microsoft.PowerShell.Management
Microsoft.PowerShell.Utility
MyModule
Run Code Online (Sandbox Code Playgroud)
我的脚本如何导入并使用MyModule.psm1而不将其保留在调用者的当前会话中?请记住,调用可能已经导入了模块,并且不希望它被脚本卸载(因此只需在脚本完成时删除模块就不够了).
我考虑过点源模块而不是导入它,但我想要这个模块的原因包括PowerShell Import-Module和Dot Sourcing
听起来你已经用伪代码描述了你想要的东西.这是实际代码:
$checkCmds = Get-Commands -Module MyModule
Import-Module MyModule
# Do stuff here . . .
# unload only if we loaded it
if ($checkCmds -eq $null) { Remove-Module MyModule }
Run Code Online (Sandbox Code Playgroud)
据我所知,您无法从导入模块的“脚本”中获得自动清理行为。OTOH,如果您从另一个模块中导入模块,则当父模块被删除时,如果没有其他模块使用它们(或者除非指定了 ipmo -global ),则它导入的任何模块都将被删除。
| 归档时间: |
|
| 查看次数: |
19034 次 |
| 最近记录: |