从Windows Powershell发送HTTP请求的最佳方法是什么?
我是新来的开发(通过贸易管理员),我建立我的开发环境,我想建立一个CruiseControl.Net服务器Server 2008上快速谷歌没来任何指令得到它运行在IIS 7.0上,所以我想知道是否有人有这方面的设置经验.
是否提供了从PowerShell序列化和反序列化对象的例程(由PowerShell Remoting执行)?
我想避免将对象写入磁盘(使用Export-CliXML)并使用(Import-CliXML)将其读回.
基本上,我想获得反序列化创建的属性包,以便我可以将它们添加到AppFabric对象缓存中.否则,AppFabric会尝试使用.NET序列化,这对于许多标准对象类型都会失败.
也许通过$ host或$ executioncontext变量?
我有一个由...组成的字符串
"some text \\computername.example.com\admin$".
Run Code Online (Sandbox Code Playgroud)
我怎么做替换所以我的最终结果只是"computername"
我的问题似乎不知道如何逃避两个反斜杠.为了简单起见,我宁愿不使用正则表达式:)
编辑:实际上看起来像stackoverflow也有双反斜杠的问题,它应该是一个双反斜杠,而不是单一的反斜杠
我正在尝试以编程方式为函数创建一个参数块(沿着这篇博文的内容).
我开始使用CommandMetadata对象(来自现有函数).我可以创建ParameterMetadata对象并设置类似ParameterType,名称以及一些属性的内容.
我遇到的问题是,当我使用ProxyCommand类的GetParamBlock方法时,我没有生成我在ParameterMetadata的Attributes集合中设置的任何属性.
这导致的问题是,当调用GetParamBlock时,新参数不会使用适当的Parameter属性进行注释.
例:
function test
{
[CmdletBinding()]
param (
[Parameter()]
$InitialParameter)
Write-Host "I don't matter."
}
$MetaData = New-Object System.Management.Automation.CommandMetaData (get-command test)
$NewParameter = New-Object System.Management.Automation.ParameterMetadata 'NewParameter'
$NewParameter.ParameterType = [string[]]
$Attribute = New-Object System.Management.Automation.ParameterAttribute
$Attribute.Position = 1
$Attribute.Mandatory = $true
$Attribute.ValueFromPipeline = $true
$NewParameter.Attributes.Add($Attribute)
$MetaData.Parameters.Add('NewParameter', $NewParameter)
[System.Management.Automation.ProxyCommand]::GetParamBlock($MetaData)
Run Code Online (Sandbox Code Playgroud) 在试验scriptblocks时,我试图使用带有高级函数的scriptblock参数,并注意到它的执行方式与提供给编译的cmdlet时的执行方式不同.
在审查这个博客帖子从PowerShell团队博客,看来,如果一个脚本块是不是该参数的有效输入PowerShell引擎应评估脚本块.似乎在使用scriptblock参数调用函数时,它会尝试直接将scriptblock转换为参数类型,而不是根据管道中的当前对象来评估scriptblock.
我的意图是复制行为,如:
Import-CSV somecsv.csv | get-wmiobject -class {$_.class} -Computer {$_.computer}
Run Code Online (Sandbox Code Playgroud)
用于高级功能.
示例脚本:
$sb = {throw "If there was an error, the scriptblock was evaluated!"}
function test ()
{
param (
[Parameter()]
[string]
$ThisShouldBeEvaluatedForEachItem,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[string]
$FullName
)
process
{
write-host $Fullname, $ThisShouldBeEvaluatedForEachItem
}
}
Get-ChildItem | test -ThisShouldBeEvaluatedForEachItem $sb
Run Code Online (Sandbox Code Playgroud)
这是预期的行为,还是我朝错误的方向前进?
基于Keith的响应,我将ValueFromPipeline和ValueFromPipelineByPropertyName(在两个单独的测试中)添加到ThisShouldBeEvaluatedForEachItem参数的Parameter属性中.这样做会使示例工作,尽管它似乎从团队博客帖子中击败了scriptblock参数的既定目的.