问题标签 [add-type]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
142 浏览

powershell - 错误:从运行对话框导入 DLL

仅当从运行对话框执行以下 powershell 命令时,我似乎才遇到 DLL 导入错误。来自打开的 powershell 窗口的完全相同的命令可以毫无问题地执行。

产生 RUN 对话框命令时出错:

打印以下错误: PowerShell错误

在已打开的 powershell 窗口中运行相同的代码时不会返回错误:

我觉得这非常令人困惑,因为我认为这两种方法都应该产生相同的结果。为什么会发生这种情况有任何合乎逻辑的理由吗?如何解决此错误?

代码的目的是最小化 powershell 窗口。我知道还有其他方法可以实现这一点。

0 投票
0 回答
591 浏览

powershell - PowerShell PSObject 在转换为 JSON 对象之前更改字段名称

我在 PowerShell 中有一个项目,我使用“Add-Type”创建了一个自定义类型。我想使用类,但我仅限于必须使用的系统上的 PowerShell 版本。

该对象被转换为 JSON 并使用 REST API 发送出去。为了避免一些命名问题,我最终在字段名称前加上了“”。我想在将它们发送到 API 之前将其删除。我认为进行重命名会很简单,但后来我意识到,如果我通过删除带有“”的任何内容来重命名 JSON 对象中的所有内容,我用于重命名的方法可能会导致问题

这是自定义类型:

仅使用字符串 REPLACE 方法我会得到这个:

而不是这个:

这是我正在使用的方法:

我检查了 PSObject 提供的方法,但我只是不确定语法。如果可能的话,我想在转换为 JSON 之前更改现有对象,而不必创建 CLONE 或遍历 JSON 值。

0 投票
1 回答
155 浏览

c# - PS Add-Type 期间“找不到元文件 .dll”(C# 代码)

我想使用 Add-Type 在 PS 脚本中执行 C# 代码。但我收到: Metadata file 'Microsoft.Azure.ServiceBus.dll' could not be found。C# 代码使用名为“Microsoft.Azure.ServiceBus”的 NuGet 包。

我引用的程序集似乎不起作用。这是我的代码:

附言

C#

这个问题的根源是什么,我该如何解决?不幸的是,我对 PS 和 C# 都不是很熟悉。

0 投票
0 回答
418 浏览

c# - powershell中的多线程问题

[编辑 10/29/18] - 似乎(基于日志记录)parallel.foreach 函数没有等待返回值信息

下面是我用来拥有多线程 powershell 函数的代码。我正在利用 powershell 中的 add-type 函数在我的 Parallel.ForEach 的 powershell 代码中使用 c#。我遇到的问题是,有时这个函数不会在一个 dag 中列出我们所有的服务器,而其他时候它会列出。(它应该始终为每个服务器返回 1 个值)。

我已经通过在将它们传递给 Parallel.ForEach 函数之前将它们写入控制台来验证所有服务器都被馈送到 Parallel.ForEach 中,并且我已经验证它们在丢失时也不会作为 ae.InnerExceptions 回来服务器,但我不知道如何解决它。我找不到任何关于为什么会发生这种情况的一致性或模式,并且正在寻找如何解决这个问题或解决这个问题的想法?

0 投票
1 回答
540 浏览

powershell - 如何在 PowerShell 6 中添加一些类型(我可以在 PowerShell 5 中完成)

我写了一个脚本来显示一个消息框。它在 PowerShell 5 中运行良好,但在 PowerShell 6 中不运行。我怎样才能使它工作?

我写的脚本(摘录):

错误信息:

添加类型:找不到路径“C:\Users\Owner\System.Windows.Forms.dll”,因为它不存在。在 C:\Users\Owner\Desktop\sample\trans-search.ps1:8 char:6 + Add-Type -AssemblyName System.Windows.Forms + ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Users\Owner\System.Windows.Forms.dll:String) [添加类型],ItemNotFoundException + FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands.AddTypeCommand

谢谢您的帮助。

0 投票
1 回答
638 浏览

c# - 如何通过命令行在 powershell 中使用 Add-Type 以执行 VB.NET 或 C#(或 JScript.net)代码?

这是有关Add-Type的 MS 文档

所以我试图通过命令行添加类型:

或者

或者

或者

但是无论我尝试执行什么都会返回一个错误。是否可以通过cmd控制台调用powershell来添加类型?然后执行添加的方法?

0 投票
1 回答
635 浏览

powershell - Powershell在PSM1的类中添加类型

在 PS1 中,这有效

但是,将该类移动到 library.PSM1 文件中,这在 PS1

它在 ISE 中有效,但在从快捷方式运行时不在控制台中。我明白了Unable to find type [system.drawing.icon].

显然第一个 Add-Type 有效,我在 New-Object 上没有错误。那么为什么第二种加载失败呢?我还尝试将两个 Add-Type 行移出类,并移入模块文件的根目录,结果相同。起作用的是将这些行添加到 PS1 using module(必须是第一个非标记行)和呼叫之间。那行得通,但是你没有一个自包含的类,这似乎有点糟糕。我在这里有什么误解?

如何创建一个使用 .NET 类型的自包含类并从模块文件中使用它?

0 投票
1 回答
1112 浏览

wpf - PowerShell 中是否仍需要 Add-Type -AssemblyName PresentationFramework?

我有以下 PowerShell 代码:

如果我注释掉第一Add-Type条语句,脚本仍然可以工作并显示窗口 UI。

上面的脚本来自于 2016 年的培训课程。我想知道是否Add-Type由于 PowerShell 的变化而不再需要该语句?PowerShell 环境中是否默认包含有问题的程序集?我在 Windows 10 上使用 ISE 和 VS Code 进行了测试。

0 投票
1 回答
26 浏览

powershell - 确定类驻留在哪个模块中

我有一些代码在 ISE 中有效,但在脚本中失败。它在我使用的地方失败[System.Windows.Media.GlyphTypeface]::new(),这是一种常见的情况,一个在 ISE 中自动加载的模块,但需要在脚本中单独加载。所以这就提出了一个普遍的问题,有没有办法从类型开始并确定需要什么模块?或者这是您只需要已经知道和/或能够挖掘 Microsoft 支持文档以获取信息的那些之一?

0 投票
0 回答
244 浏览

powershell - 在 PowerShell 7 中加载 [System.IO.MemoryMappedFiles]

我想在 PowerShell-7 上使用[System.IO.MemoryMappedFiles]和在 Windows 10 20H2 上运行的 .NetFramework 4.8(版本 528372);

并尝试将 DLL 加载到 PowerShell-7 控制台中。我的目标是使用[System.IO.MemoryMappedFiles]::CreateFromFile()创建大型二进制文件的视图。

以下基于Add-Type的“示例 3”和“示例 2”,并在 SO 中查看类似问题的答案,例如Unable to use System.IO.Compression.FileSystem.dll

但是,在PowerShell 7 (x64) 控制台上,Get-Member返回“无法找到类型”错误,如下所示。

当我运行$AccType = Add-Type -AssemblyName "System.IO.MemoryMappedFiles" -PassThru时,$AccType包含以下内容,

运行Add-Type命令后,当我进入

[系统.IO.内存

然后在 PS7 控制台输入 TAB 键,

[System.IO.MemoryMappedFiles

是自动完成的,但是当我进入时(请忽略下面的标题双引号。)

" [System.IO.MemoryMappedFiles]::

并输入 TAB 键,什么都没有完成。预加载的标准库,如

“[系统.IO.文件]::

完成方法

[System.IO.File]::AppendAllLine(

输入 TAB 键。