Powershell脚本只返回,没有日志输出
PSA:我第一次使用PowerShell,我的目标是Bash或Python,如果它看起来很奇怪,我很抱歉。 我创建了一个Powershell脚本,如果我们的Windows 2019服务器重新启动(例如powercut),它将检查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
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