2016-07-19 65 views
5

不能點源從目錄 所有PowerShell腳本試圖源的所有PowerShell腳本:如何從目錄

. .\*.ps1 

返回此:

> : The term '.\*.ps1' is not recognized as the name of a cmdlet, 
> function, script file, or operable program. Check the spelling of the 
> name, or if a path was included, verify that the path is correct and 
> try again. At line:1 char:3 
> + . .\*.ps1 
> + ~~~~~~~ 
>  + CategoryInfo   : ObjectNotFound: (.\*.ps1:String) [], CommandNotFoundException 
>  + FullyQualifiedErrorId : CommandNotFoundException 
+0

我希望'。 。\ *。ps1'工作 –

回答

4

使用Get-ChildItem抓取所有*.ps1文件,然後循環通過與ForEach-Object和點源他們的個人

$Path = "C:\Scripts\Directory" 
Get-ChildItem -Path $Path -Filter *.ps1 |ForEach-Object { 
    . $_.FullName 
} 

GH他們,如果你把上面的腳本,本身位於$Path腳本,確保排除文件本身,以避免它遞歸點採購本身一遍又一遍:

$Path = "C:\Scripts\Directory" 
Get-ChildItem -Path $Path -Filter *.ps1 |Where-Object { $_.FullName -ne $PSCommandPath } |ForEach-Object { 
    . $_.FullName 
} 
+0

如果我將此命令添加到文件中,將其源文件並執行,它會掛起。無論如何,你知道我怎麼能把這個命令放在文件中,以便它能起作用嗎? – Alex

+0

這是因爲它遞歸地開始點源,但可以修復,讓我更新答案 –

3

這應該工作:

Get-ChildItem -Filter '*.ps1' | Foreach { . $_.FullName } 
0

要做到這一點,你可以遍歷所有的PowerShell文件和源它們:

foreach ($ps1 in (ls *.ps1)) { 
    . $ps1.FullName 
}