Powershell 5中的脚本关键字是什么意思:函数script:Set-变量

What does script keyword mean in Powershell 5: Function script:Set-Variables

我在 Function script:Set-Variables{}

中遇到了这个“script”关键字

知道为什么要使用它吗?

Function script:Set-Variables {
$PerTraceArr = @()
$script:ASNOwnerArr = @()
$ASNOwnerObj = New-Object PSObject
$ASNOwnerObj | Add-Member NoteProperty "ASN"("AS0")
$ASNOwnerObj | Add-Member NoteProperty "ASN Owner"("EvilCorp")
$ASNOwnerArr += $ASNOwnerObj #Add some values so the array isn't empty when first checked.
$script:i = 0
$script:x = 0
$script:z = 0
$script:WHOIS = ".origin.asn.cymru.com"
$script:ASNWHOIS = ".asn.cymru.com"
} #End Set-Variables

谢谢!

换句话说 docs on scopes,“脚本”范围将您的变量或函数的可见性限制为从同一脚本(包括“子”范围)运行的代码。它类似于其他 OOP 语言中受保护变量的概念。

在这里,它可能被用来阻止您使用脚本中其他地方使用的“内部”函数。当它在变量中使用时,它通常用于防止篡改您在其他地方定义的变量,或者防止您 viewing/tampering 使用内部变量。

但是,请注意,当您 dot-source 脚本时,使用“脚本”作用域不会按预期工作,因为 dot-sourcing 会将所有内容加载到您当前的作用域中,因此脚本作用域 当你dot-source.

时你所在的范围