相关疑难解决方法(0)

如何在powershell v5模块中导出类

我有一个模块设置就像一个其他脚本的库.我无法弄清楚如何在脚本范围调用中获取类声明Import-Module.我试着Export-Module用一个-class参数安排,比如-function,但是没有-class可用的.我只需要在每个脚本中声明该类吗?

设置:

  • 在\\documents\windows\powershell\modules\holidays \中的holidays.psm1
  • 活动脚本调用 import-module holidays
  • holidays.psm1中有另一个函数正确返回一个类对象,但我不知道如何在导入后从活动脚本创建该类的新成员

这是这个类的样子:

Class data_block
{
    $array
    $rows
    $cols
    data_block($a,$r,$c)
    {
        $this.array = $a
        $this.rows = $r
        $this.cols = $c
    }
}
Run Code Online (Sandbox Code Playgroud)

powershell powershell-5.0

24
推荐指数
6
解决办法
1万
查看次数

PowerShell 5 和类 - 无法将“X”类型的“X”值转换为“X”类型

我正在尝试使用 PowerShell 的类,这是一种非常方便的将相关数据分组在一起的方法,并且在处理行为方面非常繁琐。简化方案:一个定义类的 PS 脚本和另一个使用该类的脚本。

通用.ps1

class X
{
    [string] $A
} 
Run Code Online (Sandbox Code Playgroud)

脚本1.ps1

. $PSScriptRoot\Common.ps1

[X] $v = New-Object X
Run Code Online (Sandbox Code Playgroud)

一切都很好-你可以运行Script1.ps1没有问题的次任意数量的-直到你做出任何的改变Common.ps1。您将面临以下错误。

无法将“X”类型的“X”值转换为“X”类型。
在 D:\temp\PSIssue\Script1.ps1:3 字符:1
+ [X] $v = 新对象 X
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullQualifiedErrorId:运行时异常

可以想象,PS 文件中的任何更改(即使您只是添加了空格)都会强制其重新编译,因此该类型X变得与以前不同X- 临时容器程序集已更改(同样的问题在 .NET 中很容易重现 - 类型与只要“完全限定的程序集名称”相同)。变化Script1.ps1使事情恢复正常。

有没有办法克服这类问题?

powershell class powershell-5.0

8
推荐指数
1
解决办法
2356
查看次数

标签 统计

powershell ×2

powershell-5.0 ×2

class ×1