快點?- 因為我還在學習 Powershell。我想知道是否可以將腳本中的引數與在命令列中輸入的引數結合起來?即我有一個這樣的功能作為例子......
function GetInfo {
param ($SiteName, $Subnet, $Cred, $ComputerName)
Write-Host "Checking $Site and $ComputerName"
<# ... Additional logic to check computername prefix & subnet etc. #>
}
$SiteName = "London1"
$Subnet= "192.168.10.1/24"
$Cred = <supplied>
#$ComputerName = "blah1"
GetInfo $SiteName $Subnet $Cred $ComputerName
$SiteName = "London2"
$Subnet= "192.168.11.1/24"
$Cred = <supplied>
#$ComputerName = "blah2"
GetInfo $SiteName $Subnet $Cred $ComputerName
現在在腳本中說我會指定 SiteName、Subnet、Cred.... 但在命令列上我想指定 -ComputerName 但是當我使用腳本時,假設我知道 Lon1-PC1 在“ London1" 我想在呼叫命令上執行此操作:
.\GetPCInf.ps1 -ComputerName "Lon1-PC1"
或者
.\GetPCInf.ps1 -ComputerName "Lon2-PC1"
顯然,腳本中會有額外的邏輯來說明如果 -ComputerName 前綴是“Lon1”則執行 X 或者如果 -ComputerName 前綴是“Lon2”則執行 Y..
顯然我知道我可以將計算機名放在腳本中,保存并運行它。
到目前為止,當我嘗試時,與 -Computername 回傳相關的任何事情都沒有發生..
我還沒有嘗試過將引數和 Args 結合起來——但我讀過 Args 不是最好用的,所以我試圖避免它。
如果這不能做到那么公平,只是想知道是否有人可能知道這是否可以做到,因為它可以節省我輸入:
.\GetPCInf.ps1 -SiteName London1 -Subnet "192.168.10.1/24" -Cred mycreds -ComputerName "Lon1-PC1"
每次我想運行它....
我想我可以創建批處理檔案來呼叫腳本并將計算機名 %1 放在批處理檔案中并以這種方式呼叫它,但真的很好奇..
非常感謝。
uj5u.com熱心網友回復:
到目前為止,當我嘗試時,沒有任何與
-Computername回報有關的事情發生..
腳本只是存盤在檔案中的函式——它們param像函式一樣支持塊和引數宣告——所以宣告一個$ComputerName引數:
# GetPCInf.ps1
param(
[Parameter(Mandatory = $true)]
[string]$ComputerName
)
# define GetInfo function
function GetInfo {
param ($SiteName, $Subnet, $Cred, $ComputerName)
Write-Host "Checking $Site and $ComputerName"
<# ... Additional logic to check computername prefix & subnet etc. #>
}
# define table of arguments to pass to GetInfo
$GetInfoArgs = @{
ComputerName = $ComputerName
}
# add additional arguments based on computer name value
if($ComputerName -like 'Lon1-*'){
$GetInfoArgs = @{
SiteName = "London1"
Subnet= "192.168.10.1/24"
Cred = $(<# credential goes here #>)
}
} elseif($ComputerName -like 'Lon2-*') {
$GetInfoArgs = @{
SiteName = "London2"
Subnet= "192.168.11.1/24"
Cred = $(<# credential goes here #>)
}
} else {
$GetInfoArgs = @{
SiteName = "DefaultSite"
Subnet= "192.168.12.1/24"
Cred = $(<# credential goes here #>)
}
}
# invoke GetInfo function
GetInfo @GetInfoArgs
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348790.html
標籤:电源外壳
