編寫腳本以將作爲參數輸入的DNS服務器放置到主網卡上。如何拆分參數
服務器輸入爲:1.1.1.1,2.2.2.2,3.3.3.3
(有時沒有三臺服務器,但更多/更少)。
我想分割逗號「,」 - 我該怎麼做?
我試過,但PowerShell是抱怨:
[Parameter(Position = 4)]
$a = $DNSServers
$a.Split(',')
當腳本運行第四參數是通過逗號分割的DNS服務器。
UPDATE
我會盡量馬特的建議...更多infoL
沒想到我會得到這麼多的迴應。道歉,由於在我的地方安全限制,我不能複製/粘貼服務器上的代碼(所以再次輸入它的背面疼痛)。所以,決定只複製我需要的位 - 我認爲這就夠了(顯然不是!)。
該腳本將被運行爲:
script.ps1 IP_ADDRESS SUBNET_MASK GATEWAY DNS_SERVER
即:script.ps1 10.1.1.1 255.255.255.0 10.1.1.254 1.1.1.1,2.2.2.2,3.3。 3.3
所以將要調用的第四個參數是DNS服務器(可以有多個DNS服務器)。該參數是從外部網絡客戶端中提取的,該客戶端用於進入DNS服務器的地方 - 但通常是3個IP地址。
哦,錯誤是這樣的 - 我也不太清楚它缺少「)」
PS C:\Temp> C:\Temp\ip_assign.ps1
At C:\Temp\ip_assign.ps1:14 char:17
+ $a = $DNSServers
+ ~
Missing ')' in function parameter list.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndParenthesisInFunctionParameterList
設法拿到了主要部分,然後我在做什麼 - 希望這是不夠的:
param (
[Parameter(Mandatory=$true,
Position = 1)]
[string]$IP
,
[Parameter(Position = 2)]
[string]$SubnetMask = "none"
,
[Parameter(Position = 3)]
[string]$Gateway = "none"
,
[Parameter(Position = 4)]
$a = $DNSServers
$a.Split(',')
$TeamAdaptor = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.Caption -ilike '*Virtual*'}
$TeamAdaptor.EnableStatic($IP,$SubnetMask)
$TeamAdaptor.SetGateways($Gateway)
$TeamAdaptor.SetDNSServerSearchOrder("$DNSServers")
PowerShell抱怨... * * * * *如果你收到錯誤:它說什麼?此外,您的代碼片段太不完整。請[添加更多上下文](http://stackoverflow.com/help/mcve)。 –
該命令是正確的。如果'$ a'的內容就是你說的那樣,它應該按預期工作。你有什麼? – aldux
您向我們展示您傳遞的參數非常重要。這可能已經是一個數組。向我們展示一個示例函數調用。另外,不可能是怎麼編碼的[參數(位置= 4)]'不屬於它的孤獨。它的存在是我知道我只能看到一個函數調用的唯一方法 – Matt