【问题标题】:How do I turn a collection'1/system.object into something Invoke-WebRequest will accept?如何将 collection'1/system.object 变成 Invoke-WebRequest 可以接受的东西?
【发布时间】:2019-01-23 22:20:14
【问题描述】:

在我的 powershell 脚本中,我需要将一个变量转换为 Invoke-WebRequest 接受的东西。示例:

     $Server_Names.GetType();

     IsPublic IsSerial Name                                     BaseType            
     -------- -------- ----                                     --------            
     True     True     Collection`1                           System.Object       

如何将此变量 $Server_Names 转换为 Invoke-WebRequest 接受的变量?我需要先将此变量转换为数组吗?

基本上$Server_Names 变量就是这样的:

server01.administration.us 
server02.administration.us
server03.administration.us

这是我运行$Server_Names | % { $_.GetType() }时得到的结果

 IsPublic IsSerial Name                                     BaseType            
 -------- -------- ----                                     --------            
 True     True     String                                   System.Object       
 True     True     String                                   System.Object       
 True     True     String                                   System.Object       

【问题讨论】:

  • Invoke-WebRequest 的哪个参数应该接受您的变量?我认为它是 Uri,它是标量,因此不支持数组/列表。您需要 foreach 循环或管道 foreach-object。
  • @Max 好吧,我想如果它是一个数组,我可以让它工作:$Server_Names | % { Invoke-WebRequest $_ }。不过我可能错了。
  • Collection .Net 类型支持 IEnumerable,因此您的构造应该可以工作:docs.microsoft.com/en-us/dotnet/api/…
  • 您能否提供更多信息,您想完成什么?你为什么使用 Invoke-webrequest?
  • 数组和集合(以及任何其他支持枚举的 .Net 类)都适用于 foreach 循环和 % / foreach-object 命令行开关。由于内部集合类型是字符串,那么您应该能够运行您在第二条评论中提出的代码。你有没有尝试过? $Server_Names | ForEach-Object { Invoke-WebRequest -Uri $_ } 对我来说效果很好。

标签: arrays string powershell collections type-conversion


【解决方案1】:

请尝试一下:

$Server_Names | ForEach-Object { Invoke-WebRequest -Uri $_ }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多