是否可以使用其命名空间和名称来调用由 Add-Type 添加的函数?

zom*_*ega 3 powershell

我正在使用这样的内核函数:

$defText = '[DllImport("kernel32.dll")]public static extern uint SetThreadExecutionState(uint esFlags);'
$def = Add-Type -MemberDefinition $defText -PassThru -Namespace myNameSpace -Name myName
$def::SetThreadExecutionState(0)
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以通过名称空间和名称调用该方法(不使用 -PassThru)?

$defText = '[DllImport("kernel32.dll")]public static extern uint SetThreadExecutionState(uint esFlags);'
Add-Type -MemberDefinition $defText -Namespace myNameSpace -Name myName
myNameSpace::myName(0)
Run Code Online (Sandbox Code Playgroud)

当然它说没有找到该命令。是否可以通过名称空间和名称来调用方法?

Jos*_*efZ 5

按字面意思使用定义的类型,[myNameSpace.myName]如下所示:

$defText = '[DllImport("kernel32.dll")]public static extern uint SetThreadExecutionState(uint esFlags);'
Add-Type -MemberDefinition $defText -Namespace myNameSpace -Name myName
[myNameSpace.myName]::SetThreadExecutionState
Run Code Online (Sandbox Code Playgroud)
OverloadDefinitions
-------------------
static uint SetThreadExecutionState(uint esFlags)
Run Code Online (Sandbox Code Playgroud)