Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell脚本只返回,没有日志输出_Powershell_Docker_Kubernetes - Fatal编程技术网

Powershell脚本只返回,没有日志输出

Powershell脚本只返回,没有日志输出,powershell,docker,kubernetes,Powershell,Docker,Kubernetes,PSA:我第一次使用PowerShell,我的目标是Bash或Python,如果它看起来很奇怪,我很抱歉。 我创建了一个Powershell脚本,如果我们的Windows 2019服务器重新启动(例如powercut),它将检查Get HnsNetwork |?Name-eq“l2bridge”返回。如果没有返回任何内容,则调用函数Create Hns,该函数创建一个External和l2bridge接口,然后与docker和kubernetes一起使用。下面是我目前掌握的代码 function

PSA:我第一次使用PowerShell,我的目标是Bash或Python,如果它看起来很奇怪,我很抱歉。

我创建了一个Powershell脚本,如果我们的Windows 2019服务器重新启动(例如powercut),它将检查
Get HnsNetwork |?Name-eq“l2bridge”
返回。如果没有返回任何内容,则调用函数
Create Hns
,该函数创建一个
External
l2bridge
接口,然后与docker和kubernetes一起使用。下面是我目前掌握的代码

function Write-Log {
    param (
        [Parameter(Mandatory=$False, Position=0)]
        [String]$Entry
    )
    "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss.fff') $Entry" | Out-File -FilePath $LogFilePath -Append
}

Function Create-Hns {
    Write-Log -Entry "Starting to create the HnsNetwork..."
    Try {
        ipmo c:\k\SDN\windows\helper.psm1 -force
        ipmo c:\k\SDN\windows\hns.psm1 -force

        if(!(Get-HnsNetwork | ? Name -eq "External")) {
          New-HNSNetwork `
            -Name "External" `
            -Type NAT `
            -AddressPrefix "192.168.x.x/30" `
            -Gateway "192.168.x.x" `
            -Verbose
        }

        if(!(Get-HnsNetwork | ? Name -eq "l2bridge")) {
          New-HNSNetwork `
            -Name l2bridge `
            -Type L2Bridge `
            -AddressPrefix "192.168.x.x/24" `
            -Gateway "192.168.x.x" `
            -Verbose
        }

        $hnsNetwork = Get-HnsNetwork | ? Name -eq l2bridge
        $hnsEndpoint = New-HnsEndpoint `
                         -NetworkId ($hnsNetwork).Id `
                         -Name "l2bridge" `
                         -IPAddress "192.168.x.x" `
                         -Gateway "0.0.0.0" `
                         -Verbose Attach-HnsHostEndpoint `
                         -EndpointID ($hnsEndpoint).Id `
                         -CompartmentID 1
    } Catch {
        Write-Log -Entry "An error occured"
        Write-Log -Entry $_
        Break
    }
    If ($?) {
        Write-Log -Entry "VERIFY HERE"
        Wrtie-Log -Entry $_
    }   
}

$LogFilePath = "C:\k\CreateHns.log"

$sFetch = (Get-HnsNetwork | ? Name -eq "l2bridge")

If (!$sFetch) {
    Write-Log -Entry "Didn't get any info on l2bridge, we need to create one."
    Create-Hns
Else {
    Write-Log -Entry  "Got information for the l2bridge, nothing needs creating."
    Write-Log -Entry "Nothing to do"
    }
}
当我在Powershell中使用
/Check HnsNetwork.ps1
运行脚本时,它只会返回,而不会注销到日志文件。根据VS代码,它的格式正确


上面的代码块是否有问题?如果您有任何建议,我们将不胜感激。

只要范围界定不是问题,发布的代码中有一些错误需要修复。如果
$sFetch
从未计算为
$false
$null
,则运行时不会出现错误。考虑以下事项:

  • 条目
    Wrtie Log-entry$\u
    需要更改为
    Write Log-entry$\u
  • If(!$sFetch){
    写日志条目“没有得到关于l2bridge的任何信息,我们需要创建一个。”
    创建Hns
    缺少结束符}

没有错误消息?没有,我检查过,有一些是前一天晚上的,但今天早上没有。我已经把它清理干净了,它还可以正常工作:)很好,很好的地方。纠正这一点,似乎工作得很好。只需要检查一些应该运行的服务,我们就完成了。谢谢你的反馈。