在哪里放PowerShell脚本?

(我不敢相信我实际上在问这个问题,但是我今天没有脑力了。)

我刚刚写了我的第一个严重的PowerShell脚本,我真的很高兴。 我打算每天都用它。 我希望能够从Posh命令行中调用它。 我会给它一个动词 – 名词types的名字,但现在它是一个简单的.ps1,而不是那些花费高级function,参数等。

那么它应该去哪里,我怎样从一个Posh命令行调用它? 我打算写更多! 他们应该去哪里?

  • 它应该是我的个人资料中的一个function吗?
  • 它应该走在我的道路上吗?
  • 它是否在PSMODULEPATH? 什么样的东西去那里? 它看起来是recursion还是像正常的PATH?

你们在哪里把你的PowerShell脚本,你怎么组织? 我有很多使用C#和C ++工具的经验,并且知道如何命名它们以及将它们放在哪里。 而在另一个极端,我做了很多蹩脚的.bat文件,这些文件通常是独立的,或者堆在一个文件夹中。 但PowerShell似乎是非常不同的。 你可以非常快速地制作糟糕的.bat文件types的东西,或者你可以用它来构build库和复杂的服务。

我真的很喜欢在开始之前如何开始组织这些事情的一些想法。 显然每个人都不一样,所以我希望有一些讨论。 谢谢!

我将我的个人脚本放在与我的个人资料相同的文件夹中。 然后,我可以将它们一起备份。 我的个人资料以:

$ProfileRoot = (Split-Path -Parent $MyInvocation.MyCommand.Path) $env:path += ";$ProfileRoot" 

使用V2,您可以在configuration文件所在的WindowsPowerShell目录中创build模块目录。 当你运行import-module时,PS会自动查找该目录来加载模块。 我在WindowsPowerShell下创build了一个“脚本”目录,这是一个模块的兄弟目录。

我使用我的configuration文件使用以下代码使用variables设置一些目录:

 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 

我的build议: – 将脚本存储在一个目录中,例如c:\ posh – 将目录添加到$ 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 

关于脚本组织..根据脚本的目的只是几个目录:)个人,开发,外部(下载),样本,…

这就是我所做的:

注意:将“ModuleName”replace为有意义的内容。

创build一个模块并将其作为“C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules \ ModuleName \ ModuleName.psm1”保存在全局模块文件夹中。 例如:

 function global:FancyFunction() { # do something interesting here. } Export-ModuleMember -function FancyFunction 

打开您的PowerShellconfiguration文件,并添加以下行,以确保您的模块每次启动PowerShell会话时加载:

 Import-Module ModuleName -Force 

您可以通过input以下命令轻松find您的PowerShellconfiguration文件:

 notepad $profile 

当你打开一个新的powershell会话时,你应该能够从控制台或其他脚本调用你的函数,而不必做任何事情。