Để bổ sung Marcanpilami's helpful answer:
Lưu ý: Để loại bỏ (undefine) một biến hoàn toàn, sử dụng Remove-Variable <name> [-Scope <scope>]
.
Trừ$test
được định nghĩa với Set-Variable -Option AllScope
,
Clear-Variable test -Scope Script
và
là NOT thường tương đương.
(VớiSet-Variable -Option AllScope
họ đang có, nhưng sau đó lập luận -Scope
trở nên không thích hợp, bởi vì khi đó chỉ một dụ của biến tồn tại, trên tất cả các phạm vi.)
$test = $null
-trừ khi thực hiện trong phạm vi tương tự như khi biến test
ban đầu được tạo - sẽ ẩn hoàn toàn tạo biến số test
trong phạm vi hiện tại (và gán $null
cho nó) và giữ nguyên biến số gốc. Để biết thêm về phạm vi biến đổi trong PS, xem this answer của tôi.
Lưu ý rằng cú pháp biến phân cung cấp Phạm vi quá, thông qua một phạm vi tiền tố, nhưng nó được giới hạn global
, script
, và local
(mặc định): $global:test = $null
, $script:test = $null
, $local:test = $null
Ngoài ra còn có phạm vi private
: biến thể của local
ngăn không cho phạm vi hậu duệ nhìn thấy biến - một lần nữa, xem this answer.
Nếu bạn đã chắc chắn rằng bạn là nhắm vào cùng phạm vi, hai hình thức trên là chức năng tương đương: họ gán $null
để biến mục tiêu. [1]
Tuy nhiên, sử dụng Clear-Variable
cho phép bạn làm hai việc mà $<scope>:testing = ...
không:
các -Scope
tham số cũng chấp nhận một số giá trị cho biết các phạm vi tương đối với phạm vi hiện tại: 0
là s hiện tại đối phó, 1
là phạm vi chính, v.v.
bạn có thể mục tiêu nhiều biến (hoặc như một mảng tên hoặc sử dụng ký tự đại diện)
[1] Pitfall:
Lưu ý rằng nếu biến mục tiêu là bị ràng buộc loại (được gán với "ký pháp đúc"; ví dụ., [int] $i = 1
), loại là giữ - cho dù sử dụng $testing = $null
hoặc Clear-Variable
- và chuyển đổi ngầm loại có thể xảy ra, có thể có kết quả bất ngờ hay thất bại hoàn toàn:
[int] $i = 1 # type-constrain $i as an integer
Clear-Variable i # equivalent of $i = $null
$i # !! $i is now 0 (!), because [int] $null yields 0
[datetime] $d = 1 # type-constrain $d as DateTime
Clear-Variable d # !! FAILS, because `$d = $null` fails, given that
# !! $null cannot be converted to [datetime]
Cảm ơn, đọc sự giúp đỡ sẽ đã được một ý tưởng tốt ;-) –
++, nhưng đối xứng và khả năng xác định phạm vi đích bạn nên đề cập đến ['Remove-Variable'] (https://technet.microsoft.com/library/hh849935.aspx) . – mklement0
Cả 'Biến thể rõ ràng' và gán' $ null' giữ nguyên loại biến liên kết kiểu (một biến được xác định bằng "ký pháp đúc", ví dụ: '[int] $ i = 1'). – mklement0