(我不敢相信我实际上是在问这个问题,但是我当天没有脑力.)
我刚刚写了我的第一个严肃的PowerShell脚本,我真的很高兴.我计划每天使用它.我希望能够从Posh命令行调用它.我会给它一个动词 - 名词类型的名字,但是现在它是一个简单的.ps1,而不是那些采用params等的高级函数之一.
那么它应该去哪里以及如何从Posh命令行调用它?我打算写更多!他们应该去哪儿?
你们在哪里放置PowerShell脚本以及如何组织它们?我在制作C#和C++工具方面有很多经验,知道如何命名它们以及放置它们的位置.而在另一个极端我已经做了很多糟糕的.bat文件,这些文件通常是独立的或堆放在某个文件夹的堆中.但PowerShell似乎非常不同.你可以非常快速地制作糟糕的.bat文件类型的东西,或者你可以用它来构建库和复杂的服务.
我真的很喜欢在开始之前我应该如何开始组织这些事情的一些想法.显然每个人都不一样,所以我希望能有一些讨论.谢谢!
Jay*_*uzi 24
我将我的个人脚本放在与我的个人资料相同的文件夹中.然后我可以备份并一起版本.我的个人资料开头是:
$ProfileRoot = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$env:path += ";$ProfileRoot"
Run Code Online (Sandbox Code Playgroud)
And*_*der 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
Run Code Online (Sandbox Code Playgroud)
ste*_*tej 10
我的建议: - 将脚本存储在目录中,例如c:\ posh - 将目录添加到$ env:path
$env:path += ";c:\posh"
Run Code Online (Sandbox Code Playgroud)
这可以确保您可能位于其他目录中,例如c:\ windows,但您可以调用该脚本
[c:\windows] > sampl[TAB] # it expands the name of file to sample.ps1, then hit enter
Run Code Online (Sandbox Code Playgroud)
如果你的文件sample.ps1包含函数定义并且你每次都导入它,那么我会考虑将这一行添加到你的$ profile文件中
. c:\posh\sample.ps1
Run Code Online (Sandbox Code Playgroud)
关于脚本组织..根据脚本的目的只有几个目录:)个人,开发,外部(下载),样本,...
这就是我做的:
注意:将"ModuleName"替换为有意义的内容.
创建一个模块并将其作为"C:\ Windows\System32\WindowsPowerShell\v1.0\Modules\ModuleName\ModuleName.psm1"保存在全局模块文件夹中.例如:
function global:FancyFunction() {
# do something interesting here.
}
Export-ModuleMember -function FancyFunction
Run Code Online (Sandbox Code Playgroud)
打开您的powershell配置文件并添加以下行,以确保每次启动PowerShell会话时都加载模块:
Import-Module ModuleName -Force
Run Code Online (Sandbox Code Playgroud)
您可以通过键入以下内容轻松找到您的powershell配置文件:
notepad $profile
Run Code Online (Sandbox Code Playgroud)
当您打开一个新的PowerShell会话时,您应该能够从控制台或其他脚本调用您的函数,而无需执行任何其他操作.