解釋 PowerShell 函式中的變數/陣列作用域。
通常,當變數宣告為公共變數或在指令碼中函式外部宣告(不在任何其他變數或條件中)時,不需要將該值傳遞給函式,因為在呼叫函式之前初始化變數時,函式會保留變數的值。
示例
function PrintOut{
Write-Output "your Name is : $name"
}
$name = Read-Host "Enter your Name"
PrintOut在上面的示例中,**$name** 變數是在名為 **PrintOut** 的函式外部宣告的。因此,由於可以在函式內部讀取該變數,可以直接使用其名稱來使用該變數。
輸出
Enter your Name: PowerShell your Name is : PowerShell
相反,如果在函式內部宣告 **$name** 變數,並在函式外部檢查輸出,則不會獲得變數的值。
示例
function PrintOut{
$name = Read-Host "Enter your Name"
}
PrintOut
Write-Output "your Name is : $name"輸出
Enter your Name: PowerShell your Name is :
在上面的輸出中可以看到,**$Name** 的值為 **NULL**,因為 $name 是在函式內部宣告的。
另一方面,如果變數或陣列是在函式外部宣告的,並且在函式內部修改變數或陣列的值,則它不會反映在函式外部。
示例
function PrintOut{
$name = Read-Host "Enter your Name"
Write-Output "Name inside function : $name"
}
$name = "Alpha"
PrintOut
Write-Output "Name after calling function : $name"輸出
Enter your Name: PowerShell Name inside function : PowerShell Name after calling function : Alpha
正如我們在這裡觀察到的,**$name** 變數的值在函式內部發生變化,但不會反映在函式外部,因為它具有有限的作用域。
類似地,對於陣列,
$services = @()
function Automatic5Servc{
$services = Get-Service | Where{$_.StartType -eq "Automatic"} | Select -First 5
}
Automatic5Servc
Write-Output "Automatic Services : $services"在上面的程式碼中,您將無法獲得服務資訊,因為 Services 陣列變數的值為空,並且函式無法更新原始變數。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP