小编Pau*_*Duc的帖子

初始化将要导出的Powershell模块变量

我无法理解为什么我无法实现以下目标:

在模块中创建一组变量。让模块中的函数执行某项操作,并使用更改后的值更新父范围变量。将模块导入到调用相同功能的脚本中,并使更新后的值可用于导入模块的脚本。

例如,模块库具有以下内容:

$psVarx = -1

function Init {

   $psVarx = 2
   $script:psVarx = $psVarx
}
Run Code Online (Sandbox Code Playgroud)

Export-Member -variable $psVarx

使用该模块的脚本具有以下内容:

Import-Module Lib -Force

Init

"psVarx is {0}" -f $psVarx
Run Code Online (Sandbox Code Playgroud)

收到的输出是

psVarx is -1

问题是,如果我在模块中更新了变量的脚本作用域副本,为什么使用模块的脚本看不到变量的更新值?我很确定问题与范围界定有关。我在这里想念什么?

在模块需要工作以初始化自身并设置变量的情况下,建议使用什么方法初始化模块变量,然后将这些变量提供给导入模块的代码?

在这种特殊情况下,我想在模块中初始化许多变量,然后导出新初始化的值。

powershell

4
推荐指数
1
解决办法
2408
查看次数

C# 需要访问 Microsoft Management Infrastructure 命名空间

所有,我正在编写一个 Powershell cmdlet。让我的本地机器上的 cmdlet 一切正常。查看访问远程机器所需的内容,似乎我需要在我的项目中引用 Microsoft.Management.Infrastructure.dll。我已经搜索我的系统无济于事。

所以我打了谷歌。我确认我正在运行 Windows 7 SP1。下载并安装了 Windows 管理框架 (WMF) 4.0。没运气。仍然没有DLL。我确认我达到了最低要求。

然后我发现一个 Microsoft 页面说版本 5 需要 WMF 4.0 作为安装的先决条件。所以我将我的 .Net Framework 升级到 4.6.2。然后安装WMF 5.0。在我的系统上的任何地方仍然没有 .DLL。

有谁之前经历过这个吗?任何人都可以阐明我可能做错了什么吗?我使用的是 Visual Studio 2010。这是问题的原因吗?

我继续在网络上搜索并发现文章指出 Microsoft.Management.Infrastructure dll 是 Windows 7 SDK 的一部分。尝试安装 SDK 没有效果。仍然无法在我的系统上加载 dll。

继续寻找解决办法。

.net c# cmdlet

3
推荐指数
1
解决办法
3981
查看次数

标签 统计

.net ×1

c# ×1

cmdlet ×1

powershell ×1