使用 powershell 腳本,我正在匯出所有存在的 DHCP 服務器的串列以及服務器上的范圍。結果必須在 python 的第二個腳本中決議。(那是我們監控的系統)。
這是腳本:
$DHCPServers = (Get-DhcpServerInDC).Dnsname
$Scopes = @()
$Leases = @()
foreach ($DHCPServer in $DHCPServers) {
$Scopes = Get-DhcpServerv4Scope -ComputerName $DHCPServer | select-Object @{Name="DHCPServer"; Expression = {$DHCPServer}},ScopeID,Name,StartRange,EndRange
}
$Scopes | Export-Csv -path .\DHCP_Freeleases-Scopes-get.csv -Encoding utf8 -NoTypeInformation
foreach ($Scope in $Scopes) {
$Leases = Get-DHCPServerv4Lease -ScopeId $Scope.ScopeID -ComputerName $Scope.DHCPServer | select-Object @{Name="DHCPServer"; Expression = {$Scope.DHCPServer}}, IPAddress, @{Name="LeaseExpiryTime"; Expression = {$_.LeaseExpiryTime.toString("yyyy/MM/dd/HH:mm")}}, @{Name="ScopeID"; Expression = {$Scope.ScopeID}}, Addressstate
}
$Leases | Export-Csv -path .\DHCP_Freeleases-Leases-get.csv -Encoding utf8 -NoTypeInformation
當我在本地 DHCP 服務器(Windows Server 2012 R2)上撰寫該腳本時,CSV 匯出是我想要的方式:
"dhcp1.server.intern","10.26.9.202","2022/01/25/08:22","172.26.9.192","Active"
現在我將腳本部署到不同的服務器(Windows Server 2019),完全相同的腳本給了我這個 CSVline:
"dhcp1.server.intern","10.26.9.202","2022.01.25.08:22","172.26.9.192","Active"
我想了解它:這怎么可能?我認為 .toString() 用我的引數給出它?
謝謝你的幫助!
uj5u.com熱心網友回復:
該DateTime.ToString()方法將正斜杠和冒號視為格式說明符。這意味著它們可以替換為特定于語言環境的字符。
從檔案中:
“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“格式字串中的 z"、":" 或 "/" 字符被解釋為自定義格式說明符,而不是文字字符。為了防止字符被解釋為格式說明符,您可以在它前面加上一個反斜杠 (),它是轉義字符。
要強制使用固定格式,只需通過反斜杠轉義這些字符:
$_.LeaseExpiryTime.toString("yyyy\/MM\/dd\/HH\:mm")
正如您在評論中指出的那樣,您還可以使用預定義的格式,例如“s”(ISO 8601),根據定義,它與區域設定無關:
$_.LeaseExpiryTime.toString('s')
輸出看起來像2022-01-25T11:20:26.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420888.html
標籤:
