运行2个依赖的PowerShell脚本

时间:2014-05-20 03:03:16

标签: powershell

如果第二个脚本依赖于第一个脚本的结果,如何执行2个脚本。 我想部署网络,服务器必须在该网络中部署。网络部署需要时间,但在此之前,服务器部署脚本启动,显示错误,没有找到此类网络名称。我尝试了睡眠启动命令,但我不知道部署网络需要多长时间。

要点是,一个脚本的结果用作另一个脚本的输入。

请你在这方面帮助我。我知道在PowerShell中必须有一行cmdlts用于这种情况。

谢谢, 克里希纳

2 个答案:

答案 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