0
在下面的代碼中,我使用$scripts
變量遍歷Invoke-Command
語句中的foreach
循環。但$script
值不能正確替換,並且結果似乎是單個字符串,因爲「count.sql size.sql」。如果在Invoke-Command
循環之外定義,則foreach
循環正在正確執行。如何使用PowerShell中的Invoke-Command內的foreach循環?
是否有任何特定的方式來定義foreach
循環內Invoke-Command
?
$scripts = @("count.sql", "size.sql")
$user = ""
$Password = ""
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $User, $SecurePassword
foreach ($server in $servers) {
Invoke-Command -ComputerName $Server -Credential $cred -ScriptBlock {
Param($server, $InputFile, $scripts, $url)
foreach ($script in $scripts) {
echo "$script"
} -ArgumentList "$server,"$scripts","$url"
}
這個腳本does not看起來完整。你似乎沒有正確地調用服務器上的可變參數 – ArcSet
,因爲你的編輯看起來像你的參數列表是錯誤的。您正在使用「在他們周圍將所有變量聲明爲字符串。將參數列表更改爲 -ArgumentList $ server,$ scripts,$ url 另外您還沒有按順序聲明所有的arugments ....服務器,輸入文件,腳本,URL。目前$ Scripts是= to $ inputfile – ArcSet
'-argumentList'參數也看起來被錯誤地放置,它當前在腳本塊內 – andyb