检查在PowerShell中net.tcp绑定 [英] Check for net.tcp binding in PowerShell

查看:148
本文介绍了检查在PowerShell中net.tcp绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我配置了一个Web服务器的一个particual网站的net.tcp绑定的检查IIS设置的过程中,如果它不存在,创建它。我有code的这个块检查

I am configuring a process that checks IIS settings on a Web Server for net.tcp bindings for a particual Web Site, and if it does not exist, create it. I have this chunk of code to check

$Websites = Get-ChildItem IIS:\Sites

foreach ($Site in $Websites) {

        if ($Site.name -eq "LOSSI") {

           $Binding = $Site.bindings
           foreach ($bind in $Binding.collection) {

                    if ($bind -eq "net.tcp 443:*")
                       {        
                            Write-Host $bind
                       }
            }
        }
}

但我永远不会落入最后的条件。我已经通过绑定设置为手验证

But I never fall into the last conditional. I have validated by hand that the binding is set to

LOSSI结果
 3结果
入门结果
D:\\ LOSSI结果
HTTP *:63211:443的net.tcp:

LOSSI
3
Started
D:\LOSSI
http *:63211: net.tcp 443:

我想我做一些愚蠢的错误,但我不能弄明白。有没有检查网站绑定的TCP更简单的方法?

I imagine I am doing something silly wrong, but I cannot figure it out. Is there an easier way to check a website for tcp binding?

推荐答案


function Test-TcpPort {
    <#
        .SYNOPSIS
            Determine if computers have the specified ports open.

        .EXAMPLE
            PS C:\> Test-TcpPort -ComputerName web01,sql01,dc01 -Port 5985,5986,80,8080,443
        .NOTE
            Example function from PowerShell Deep Dives 2013.
    #>
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
        [Alias("CN","Server","__Server","IPAddress")]
        [string[]]$ComputerName = $env:COMPUTERNAME,

        [int[]]$Port = 23,

        [int]$Timeout = 5000
    )

    Process {
        foreach ($computer in $ComputerName) {
            foreach ($p in $port) {
                Write-Verbose ("Checking port {0} on {1}" -f $computer, $p)

                $tcpClient = New-Object System.Net.Sockets.TCPClient
                $async = $tcpClient.BeginConnect($computer, $p, $null, $null)
                $wait = $async.AsyncWaitHandle.WaitOne($TimeOut, $false)
                if(-not $Wait) {
                    [PSCustomObject]@{
                        Computername = $ComputerName
                        Port = $P
                        State = 'Closed'
                        Notes = 'Connection timed out'
                    }
                } else {
                    try {
                        $tcpClient.EndConnect($async)
                        [PSCustomObject]@{
                            Computername = $computer
                            Port = $p
                            State = 'Open'
                            Notes = $null
                        }
                    } catch {
                        [PSCustomObject]@{
                            Computername = $computer
                            Port = $p
                            State = 'Closed'
                            Notes = ("{0}" -f $_.Exception.Message)
                        }
                    }
                }
            }
        }
    }
}

进行检查端口微软参考脚本

添加此功能
PowerShell的64位

Microsoft reference script for check port add this function in
for powershell 64 bit

C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

有关PowerShell的32位

for powershell 32 bit

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\profile.ps1

然后打开PowerShell中使用此

then open powershell use this

Test-TCPPort google.com -Port 80

输出:

True

这篇关于检查在PowerShell中net.tcp绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆