我试过了.\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 或代码将不可用。
根据您最近的帖子进行更新。
所以,这根本不是模块问题。这是公司政策执行,他们设置了主机 ExcutionPolciy 来阻止您从不受信任或远程资源运行脚本、模块(以及它们的代码)。
可以启动 PowerShell 并将 EP 设置为您选择的任何内容,并且这不会改变主机 EP 的设置方式。
您可以创建自己的 PowerShell 快捷方式,将其固定到任务栏,将 EP 设置为您选择的任何内容,并使用正确的 EP 策略类型。用户或会话。这就是您在这里所做的一切。从此时起,使用快捷方式启动 PowerShell,而不是默认快捷方式。
EP 从未被设计为安全边界。它的存在是为了防止错误和随机运行不受信任、未签名的脚本/模块等。
本地脚本或您在当前会话中运行的任何内容都将按照您的方式运行。因此,这实际上不是一个解决方法,对于 PS 来说,这是一个“无论主机 EP 设置为何,我都想运行我的 PowerShell 内容”。
你必须愿意为此承担全部责任。因为如果你把事情搞砸了,嗯,你知道……
这不是什么技巧或解决方法,而是故意设计的。无论主机 EP 设置如何,运行 PowerShell 的方法都是有据可查的,来自 Microsoft(通过 Powershell 帮助文件)以及有关该主题的这篇旧文章。
您也不需要这样做...
$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 端口