2016-09-10 71 views
0

我在本地服務器目錄上有大約50個ps1腳本 - E:/ scripts /。這些具有不同的功能,用於收集服務器/應用統計等Powershell - 在目錄中的所有ps1文件上運行ps1腳本

更新補充有關腳本 還有第二個PS1腳本的詳細信息 - a.ps1,而我試圖用PowerShell來運行。這a.ps1有一個函數定義 - FN-運行 - 並做了Import-Module a.ps1後,它使用的語法如下:

fn-run <stats collector script name> servername domainname 
for example: 
fn-run E:/scripts/script1.ps1 myserver localdomain 

我能夠收集到的使用PowerShell這樣的腳本文件列表:

$i = 0  
$allscripts = Get-ChildItem E:/scripts/ | where {$_.extension -eq ".ps1"} | % { 
     Write-Host $_.FullName 
    } 

foreach ($script in $allscripts) { 
    $script, 
    $i++ 
    } 

這給出了E:/ scripts /目錄下腳本文件的完整列表。現在,我想弄清楚如何將這些傳遞給a.ps1 ..?

謝謝..

+0

「pass」是什麼意思? –

+0

什麼是'fn-run;'?你的意思是你想爲你找到的每個ps1文件運行'a.ps1 e:\ path \ to \ script.ps1 servername domainname'? '$ allscripts'不會包含任何內容,因爲你使用只寫入控制檯的'Write-Host',將其刪除。 –

+0

@FrodeF。對,那是正確的。運行'a.ps1 e:\ path \ to \ script.ps1 servername domainname'就是我想要做的。 – Sunshine

回答

1

這是你想要做的嗎?

Import-Module a.ps1 

$allscripts = Get-ChildItem -Path E:/scripts/ -Filter "*.ps1" | Select-Object -ExpandProperty FullName 

foreach ($script in $allscripts) { 
    fn-run $script myserver localdomain 
} 
+0

對不起,如果問題不明確。我剛剛開始使用PowerShell。我用更多的信息更新了這個問題。 a.ps1有一個函數define -fn-run。要使用該腳本,我首先運行一個「Import-Module a.ps1」。然後,我使用「fn-run e:\ scripts \ script.ps1 myserver localdomain」。它有助於澄清..? – Sunshine

+0

有了您共享的答案,我認爲在將參數傳遞給它之前,必須首先有a.ps1的導入模塊。 – Sunshine

+0

查看更新的答案。什麼是'myserver'和'localdomain'?靜態值還是應該是您正在運行此計算機的計算機的名稱和域? –

相關問題