2016-03-07 51 views
0

我目前正在嘗試通過使用for循環,路徑和文件名數組加載腳本通過PowerShell配置文件。即使變量中的完整文件路徑是正確的,並且可用命令顯示在PowerShell窗口中,腳本也不會加載它們的函數。如何使用帶數組的foreach循環加載腳本?

注意:腳本在以這種方式運行時工作. C:\scripts\script.ps1

$PublicScripts = "\\fileserver\scripts" 
$PersonalScripts = "C:\scripts" 

$commandArrayPersonal = @("adremove-pc.ps1", "template.ps1") 
$commandArrayPublic = @("get-pc.ps1", 
    "port-commands.ps1", 
    "LaptopNameChangeScript\adrenamepc-csv.ps1", 
    "LaptopNameChangeScript\PingPC-csv.ps1", 
    "remove-pc.ps1") 

. C:\scripts\adremove-pc.ps1 

function loopsForCommand([string]$path, [array]$commands) { 
    foreach ($command in $commands) { 
     $pathCommand = "$path\$command" 

     if ((Test-Path $pathCommand)) { 
      . "$pathCommand" 
      Write-Host $command 
     } else { 
      Write-Host "Unavaliable: " $command 
     } 
    } 
} 

"`r`n** * * * **`r`nScripts Available for use:`r`n" 
loopsForCommand -path $PublicScripts -commands $commandArrayPublic 
loopsForCommand -path $PersonalScripts -commands $commandArrayPersonal 
"`r`n** * * * **`r`n" 

編輯:在翻譯中丟失了一些代碼,刪除if($command.Contains("LaptopNameChangeScript")){縮小的問題。需要

+0

這裏有一個括號缺少的功能?我希望你的電話不遞歸 – Matt

+0

謝謝@matt。我刪除了大括號。當我將代碼轉移時,這是我的錯。 – Duffy

+0

謝謝@AnsgarWiechers,我從我發佈的代碼中刪除了一條不相關的行。當我將代碼轉移時,這是我的錯。 – Duffy

回答

0

函數調用來與.前綴:

. loopsForCommand -path $PublicScripts -commands $commandArrayPublic 
. loopsForCommand -path $PersonalScripts -commands $commandArrayPersonal