0

我开发了一个模块“XPTO.psm1”,我创建了我的自定义类:

class XPTO {

                [string]$baseurl
                [string]$fileToken
                $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()

在我的主脚本 SCRIPT.ps1 中,我使用:

#! /usr/bin/pwsh

Using module '/root/scripts/XPTO.psm1'

然后当我运行命令“pwsh”并调用脚本时,一切正常:

[root@XXXXXXXX scripts]# pwsh
PowerShell 6.2.3
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /root/scripts> ./SCRIPT.ps1
True                                                                                
Collecting metrics                                                                  
10/15/19 4:41:57 PM  - Starting collecting metrics from  762 applications               
10/15/19 4:41:57 PM  - Started Multithread

但是如果我在 pwsh 之外运行它不起作用,我会收到这个错误:

[root@XXXXXXXXX scripts]# pwsh ./SCRIPT.ps1
At /root/scripts/XPTO.psm1:198 char:17
+ ...   $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unable to find type [Microsoft.PowerShell.Commands.WebRequestSession].
+ CategoryInfo          : InvalidOperation:     (/root/scripts/scrip\u2026ts/XPTO.psm1:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TypeNotFound
4

1 回答 1

1

似乎 Powershell 在您第一次实例化一个新的空 WebRequestSession 时会抛出此错误,而不是在 Invoke-WebRequest 中参数化会话变量时创建一个错误。

我创建了一个名为session.ps1测试的 2 行脚本:

$session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
Write-Host $session.UserAgent

当我第一次运行它时,它给了我同样的错误。但是,我所做的只是再次运行它,并且不会发生错误。

C:\Users\nick\Desktop>pwsh session.ps1
Unable to find type [Microsoft.PowerShell.Commands.WebRequestSession].
At C:\Users\nick\Desktop\session.ps1:1 char:12
+ $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (Microsoft.Power...bRequestSession:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound

C:\Users\nick\Desktop>pwsh session.ps1
Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.16299; en-US) PowerShell/6.1.3

因此,您似乎正在以一种非预期的方式创建一个新的 WebRequestSession?不确定解决该问题的最佳方法,但我很确定它与您的模块无关。

于 2019-10-18T13:13:46.960 回答