Có thể kiểm tra sự tồn tại của một biến có phạm vi kịch bản trong PowerShell không?Làm thế nào để kiểm tra sự tồn tại của một biến kịch bản phạm vi trong PowerShell?
Tôi đã sử dụng các PowerShell Community Extensions (PSCX) nhưng tôi đã nhận thấy rằng nếu bạn nhập các module trong khi Set-PSDebug -Strict
được thiết lập, một lỗi được sản xuất:
The variable '$SCRIPT:helpCache' cannot be retrieved because it has not been set.
At C:\Users\...\Modules\Pscx\Modules\GetHelp\Pscx.GetHelp.psm1:5 char:24
Trong khi điều tra làm thế nào tôi có thể khắc phục điều này, tôi thấy điều này đoạn mã trong Pscx.GetHelp.psm1:
#requires -version 2.0
param([string[]]$PreCacheList)
if ((!$SCRIPT:helpCache) -or $RefreshCache) {
$SCRIPT:helpCache = @{}
}
Đây là mã khá thẳng về phía trước; nếu bộ nhớ cache không tồn tại hoặc cần được làm mới, hãy tạo bộ nhớ cache mới, trống. Vấn đề là gọi $SCRIPT:helpCache
trong khi Set-PSDebug -Strict
có hiệu lực sẽ xảy ra lỗi do biến chưa được xác định.
Lý tưởng nhất, chúng tôi có thể sử dụng lệnh ghép ngắn Test-Variable
nhưng một thứ như vậy không tồn tại! Tôi nghĩ về việc tìm kiếm nhà cung cấp variable:
nhưng tôi không biết cách xác định phạm vi của một biến.
Vì vậy, câu hỏi của tôi là: làm thế nào tôi có thể kiểm tra sự tồn tại của một biến trong khi Set-PSDebug -Strict
có hiệu lực, mà không gây ra lỗi?
Nếu bạn đang sử dụng PowerShell 2.0, tôi khuyên bạn nên sử dụng 'Set-StrictMode -version 2.0' vì nó sẽ phát hiện thêm các vấn đề tiềm ẩn. –