powershell - PowerShell 模块中的变量

标签 powershell module

我有一个主脚本,其中定义了一些常量。然后我有一个模块(psm1)来包含辅助函数。详情如下:

在主脚本中,我已将模块作为对象导入:

$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject

在模块中,我有两个变量,

[string]$SQLServer = $null

Function SetSQLServerAddr ([string] $name)
{
    $SQLServer = $name
}
Function GetSQLServerAddr
{
    return $SQLServer
}

我的理解是,因为我没有从模块导出 $SQLServer,所以这个变量应该是本地的,并且我应该能够设置/获取它。

事实证明并非如此。在调用 SetSQLServerAddr ([string] $name) 后,调用 GetSQLServerAddr 返回 $null。我错过了什么?

最佳答案

Function SetSQLServerAddr ([string] $name)
{
    $SQLServer = $name
}

这会在该函数的范围内创建一个新的本地 $SQLServer

如果您想更新模块 (.psm1) 范围内的变量,则需要在名称前添加前缀以表明:

Function SetSQLServerAddr ([string] $name)
{
    $script:SQLServer = $name
}

有关范围的更多信息,请参阅 get-help about_scopes .

关于powershell - PowerShell 模块中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439431/

相关文章:

javascript - React Native Module Callback 什么都不返回

Powershell 将字符串附加到文本创建一个新行

javascript - 如何在 React Native 中正确地将组件导入到我的导航器中?

powershell - PowerShell 模块中的内部函数

powershell - 在powershell中键入完全限定的类型名称?

linux - 如何获取加载的内核模块文件位置

python - ImportError:Python 2.7.13 中没有名为 _tkinter 的模块

powershell - 使用 PowerShell 查询 CRM 2011 SOAP 端点

windows - 获取远程计算机已安装的软件列表

c# - 这是从 C# 使用 PowerShell 打印 'Hello World' 的最简单方法吗?