(我无法相信我实际上是在问这个问题,但是我当天没有脑力。)
我刚刚编写了我的第一个严肃的PowerShell脚本,我对它非常满意。我计划每天使用它。我希望能够从Posh命令行调用它。我会给它一个动词 - 名词类型的名字,但是现在它是一个简单的.ps1而不是那些使用参数等的花哨的高级函数。
那么应该去哪里以及如何从Posh命令行调用它?我打算写更多!他们应该去哪儿?
你们在哪里放置PowerShell脚本以及如何组织它们?我在制作C#和C ++工具方面有很多经验,知道如何命名它们以及放置它们的位置。而在另一个极端我已经做了很多糟糕的.bat文件,这些文件通常是独立的或堆放在某个文件夹的堆中。但PowerShell似乎非常不同。你可以很快地在其中制作糟糕的.bat文件类型的东西,或者你可以用它来构建库和复杂的服务。
我真的很喜欢在开始之前我应该如何开始组织这些事情。显然每个人都不一样,所以我希望能有一些讨论。谢谢!
答案 0 :(得分:23)
我将我的个人脚本放在与我的个人资料相同的文件夹中。然后我可以备份&他们在一起版本。我的个人资料以:
开头$ProfileRoot = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$env:path += ";$ProfileRoot"
答案 1 :(得分:12)
使用V2,您可以在配置文件所在的WindowsPowerShell目录中创建模块目录。当您运行import-module时,PS将自动查看该目录以加载模块。我在WindowsPowerShell下创建了一个“Scripts”目录,这是一个模块的兄弟目录。
我使用我的配置文件使用以下代码的变量设置一些目录:
PS> cat $Profile
$scripts = "$(split-path $profile)\Scripts"
$modules = "$(split-path $profile)\Modules"
$docs = $(resolve-path "$Env:userprofile\documents")
$desktop = $(resolve-path "$Env:userprofile\desktop")
PS> cat variable:\scripts
C:\Users\andy.schneider\Documents\WindowsPowerShell\Scripts
PS> cat variable:\modules
C:\Users\andy.schneider\Documents\WindowsPowerShell\Modules
答案 2 :(得分:9)
我的建议: - 根据需要将脚本存储在目录中,例如C:\辣妹 - 将目录添加到$ env:path
$env:path += ";c:\posh"
这确保您可能位于其他目录中,例如c:\ windows,但您可以调用脚本
[c:\windows] > sampl[TAB] # it expands the name of file to sample.ps1, then hit enter
如果你的文件sample.ps1包含函数定义并且你每次都导入它,那么我会考虑将这一行添加到你的$ profile文件
. c:\posh\sample.ps1
关于脚本组织..根据脚本的目的只有几个目录:)个人,开发,外部(下载),样本,......
答案 3 :(得分:8)
这就是我的所作所为:
注意:将“ModuleName”替换为有意义的内容。
创建一个模块并将其保存在全局模块文件夹中 “C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\模块名\ ModuleName.psm1”。 e.g:
function global:FancyFunction() {
# do something interesting here.
}
Export-ModuleMember -function FancyFunction
打开您的powershell配置文件并添加以下行,以确保每次启动PowerShell会话时都加载模块:
Import-Module ModuleName -Force
您可以通过输入以下内容轻松找到您的powershell配置文件:
notepad $profile
当您打开一个新的PowerShell会话时,您应该能够从控制台或其他脚本调用您的函数,而无需执行任何其他操作。
答案 4 :(得分:0)
powershell 7.1 中使用的 PowerShellGet 模块中有一个导出变量
$PSGetPath
它有 4 个属性
AllUsersModules : C:\Program Files\PowerShell\Modules
AllUsersScripts : C:\Program Files\PowerShell\Scripts
CurrentUserModules : C:\Users\username\Documents\PowerShell\Modules
CurrentUserScripts : C:\Users\username\Documents\PowerShell\Scripts
您可以使用这些脚本位置之一。 Install-Script
也在使用它们。