如何在 powershell 中运行 psd1 和 psm1 文件?

如何在 powershell 中运行 psd1 和 psm1 文件?

我试过了.\script.psd1.\script.psm1我该如何运行它?是的,我已经设置了执行策略,我想从桌面或其他地方的某个目录运行该脚本。

答案1

Import-Module ./path/filename.psm1

就这么简单。

最简单的情况下,只需将所有功能放入 PSM1 文件中,然后像那样导入。

PSD1 文件是清单,只有当您在名为“ModuleName”的文件夹中创建模块“ModuleName”时才有意义,其中包含 2 个文件“modulename.psd1”和“modulename.psm1”。可以使用 New-ModuleManifest cmdlet 创建 PSD1 清单。它用于版本号、版权年份、依赖项等内容。

答案2

这确实是 PowerShell 的基本内容。

您不需要处理 psd1 文件。要加载和使用模块(psm1、dll),应在默认路径中的同名文件夹中安装/保存模块...

$env:PSModulePath -split ';'
# Results
<#
C:\Users\Postanote\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\Microsoft Message Analyzer\PowerShell\
C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules\
C:\Program Files (x86)\AWS Tools\PowerShell\
#>

...以便找到并自动加载。

笔记:确实没有安装模块的概念(就像使用 exe 或 msi 安装程序一样),因为所有这些......

# Get specifics for a module, cmdlet, or function
(Get-Command -Name Install-Module).Parameters
(Get-Command -Name Install-Module).Parameters.Keys
Get-help -Name Install-Module -Examples
Get-help -Name Install-Module -Full
Get-help -Name Install-Module -Online

...命令实际上做的是从 Microsoft PowerShellGallery.com 或其他定义的存储库(比如您的内部存储库)下载模块,并将其存储在配置文件路径或您告诉的路径中。

如果它们不在已知的 $env:PSModulePath 中,那么您必须从它们所在的位置手动加载/导入它们。

但是,如果它只是一个不在同名文件夹中的文件,那么您必须使用点源来加载和使用其中的代码。

您可以从存储模块(.ps1、.psm1、dlls)文件的任何位置加载/导入/Dot-Source 并运行它们,并且您有读取权限。

您可以通过您的配置文件手动加载(导入或 Dot-Sourcing)它们来执行此操作...

Microsoft.PowerShell_profile.ps1
Microsoft.PowerShellISE_profile.ps1
Microsoft.VSCode_profile.ps1

...或者仅限于每个会话,通过您的脚本或会话。

您可以使用 PowerShell Remoting 以显式或隐式方式使用部署在其他系统上的模块。这在网络上有详尽的文档。只需搜索即可。在显式/隐式远程会话中,模块中的 cmdlet 会代理到您的会话以供使用,但永远不会保存在那里。它们仅在您的会话中可用。关闭会话,其中的 cmdlet 或代码将不可用。

‘导入模块远程文件共享’

'powershell 点课程 psm1 文件'

无需安装任何软件即可使用 PowerShell Active Directory 命令

根据您最近的帖子进行更新。

所以,这根本不是模块问题。这是公司政策执行,他们设置了主机 ExcutionPolciy 来阻止您从不受信任或远程资源运行脚本、模块(以及它们的代码)。

可以启动 PowerShell 并将 EP 设置为您选择的任何内容,并且这不会改变主机 EP 的设置方式。

您可以创建自己的 PowerShell 快捷方式,将其固定到任务栏,将 EP 设置为您选择的任何内容,并使用正确的 EP 策略类型。用户或会话。这就是您在这里所做的一切。从此时起,使用快捷方式启动 PowerShell,而不是默认快捷方式。

EP 从未被设计为安全边界。它的存在是为了防止错误和随机运行不受信任、未签名的脚本/模块等。

本地脚本或您在当前会话中运行的任何内容都将按照您的方式运行。因此,这实际上不是一个解决方法,对于 PS 来说,这是一个“无论主机 EP 设置为何,我都想运行我的 PowerShell 内容”。

你必须愿意为此承担全部责任。因为如果你把事情搞砸了,嗯,你知道……

这不是什么技巧或解决方法,而是故意设计的。无论主机 EP 设置如何,运行 PowerShell 的方法都是有据可查的,来自 Microsoft(通过 Powershell 帮助文件)以及有关该主题的这篇旧文章。

绕过 PowerShell 执行策略的 15 种方法

您也不需要这样做...

$currentDirectory = Get-Location
Import-Module $currentDirectory\yourModule

...您可以通过 UNC 导入。它在 PowerShell 帮助文件中有具体显示。

<#
Example 12: Import using a fully qualified path
This example imports a specific version of a module using the fully qualified path.
#>
Import-Module -Name 'C:\Program Files\PowerShell\Modules\PowerShellGet\2.2.1\PowerShellGet.psd1

您也不需要成为管理员才能执行此操作,这取决于您使用的模块以及您用它执行的操作。例如,Exchange、ADDS 等。

答案3

.psm1 文件包含 powershell 模块的主要源代码和 .psd1 清单数据。您必须安装它们。首先将 .psd1 和 .psm1 文件放在您的 中$PSModulePath。然后运行Import-module module_name​​。然后模块将被安装和导入。

答案4

如何运行已安装的 nupkg?

PS C:> 查找模块 - 存储库本地

版本名称 存储库描述


1.0.2 windows-screenfetch Bash 截图信息工具的本地 Powershell 端口

相关内容