【发布时间】: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