如果第二个脚本依赖于第一个脚本的结果,如何执行2个脚本。 我想部署网络,服务器必须在该网络中部署。网络部署需要时间,但在此之前,服务器部署脚本启动,显示错误,没有找到此类网络名称。我尝试了睡眠启动命令,但我不知道部署网络需要多长时间。
要点是,一个脚本的结果用作另一个脚本的输入。
请你在这方面帮助我。我知道在PowerShell中必须有一行cmdlts用于这种情况。
谢谢, 克里希纳
答案 0 :(得分:1)
您使用的是哪个版本的powershell?使用$ PSVersionTable验证它。 如果你有3.0或更高,使用工作流程(序列)来获得你想要的。 请仔细阅读以下链接:http://technet.microsoft.com/en-us/library/jj574157.aspx
这是你在看什么?
示例:
# PowerShell 3.0 and greater example.
Workflow Test-Sequence {
Sequence
{
"In sequence Test1"
Start-Sleep -Seconds 10
"In sequence Test2"
Start-Sleep -Seconds 1
} # Closes Sequence
} # Closes workflow
Test-Sequence
答案 1 :(得分:0)
我想等待SMB端口 -
function Test-TCPPort {
param (
[parameter(Mandatory=$true)]
[string] $ComputerName,
[parameter(Mandatory=$true)]
[string] $Port
)
try {
$TimeOut = 5000
$IsConnected = $false
$Addresses = [System.Net.Dns]::GetHostAddresses($ComputerName) | ? {$_.AddressFamily -eq 'InterNetwork'}
$Address = [System.Net.IPAddress]::Parse($Addresses)
$Socket = New-Object System.Net.Sockets.TCPClient
$Connect = $Socket.BeginConnect($Address, $Port, $null, $null)
$Wait = $Connect.AsyncWaitHandle.WaitOne($TimeOut, $false)
if ( $Socket.Connected ) {
$IsConnected = $true
} else {
$IsConnected = $false
}
} catch {
Write-Warning $_
$IsConnected = $false
} finally {
$Socket.Close()
return $IsConnected
}
}
while (-not (Test-TcpPort -ComputerName $server_to_wait_on_here -Port 445)) {
Write-Warning ("Waiting for ${server_to_wait_on_here}:445")
start-sleep -sec 5
}
# Ok server is ready, do stuff here