2015-08-21 79 views
0

我讀過Start-Job作爲一種「多線程」任務的方法的各種資源,但我無法弄清楚如何將變量傳遞給它。我正在使用PowerCLI cmdlet將大公司的存儲從舊陣列遷移到新陣列。他們在美國有7個站點。如何在Powershell中「多線程」存儲遷移腳本?

遷移自動化的想法是/是一個多部分的ps1。 1部分:

Define variables 
Import-csv list-of-vms | foreach { 
Count the active tasks 
While count is at or over threshold, loop. 
else 
Run site specific ps1 (part 2) 
sleep 60 
Count 
} 

第2部分:

if target has move or is queued, exit. 
else, move to New-Array 
exit 

我需要的是從導入-CSV的$ _ VM通關的第2部分腳本的方式...和解釋:)

回答

0

所以你沒有得到的是使用參數與腳本。網絡上有大量的指南和帖子可以解釋如何使用參數,但是您可以通過在PowerShell中簡單運行Get-Help about_parameters -full開始。一個快速和骯髒的例子是:

Param(
    [String]$UserName, 
    [String]$GroupName 
) 

$ADUser = Get-ADUser $UserName -prop MemberOf 
If($GroupName -in $ADUser.MemberOf){"$UserName is a member of $GroupName"} 

,允許用戶執行腳本,並指定用戶和組,如果用戶是該組中,它會說一樣多。執行將是這樣的:

Script.ps1 -UserName 'TMTech' -GroupName 'CN=Administrators,OU=SecurityGroups,DC=ChinchillaFarm,DC=com' 

這將檢查是否用戶的TMTech'是對ChinchillaFarm.com域管理員小組。除非你開始進入高級參數設置你可以通過在按位置的參數太多,所以,可以縮短爲:

Script.ps1 'TMTech' 'CN=Administrators,OU=SecurityGroups,DC=ChinchillaFarm,DC=com' 

插入警告!大部分參數必須首先出現。在你的腳本(或者函數,但是我們現在不去那裏)允許的唯一的東西是[cmdletbinding()]行,以及任何你想在你的腳本中提供的基於註釋的幫助。