我有一个奇怪的问题,我在设置"Set-PSDebug -Trace 2"时会遇到不同的行为.
我将其追溯到一个没有正确执行的switch语句,并且能够在Powershell V3上重现它,但不能在Powershell V2或Powershell V1上重现(按预期工作)
采取以下简单功能:
function DoTest {
$result = "Switch Case Not Executed"
$VendorName = "Microsoft"
switch ($VendorName)
{
"Microsoft" { $result = "Switch Case Executed" }
}
Write-host "Switch: $($VendorName) -> $result"
Run Code Online (Sandbox Code Playgroud)
}
现在运行以下命令:
#Works as expected
Set-PSDebug -Off; DoTest;
#Doesn't work as expected
Set-PSDebug -Trace 2; DoTest;
Run Code Online (Sandbox Code Playgroud)
使用PSDebug Trace在PosH V3上的结果
DEBUG: 3+ Set-PSDebug -Trace 2; >>>> DoTest;
DEBUG: 1+ function DoTest >>>> {
DEBUG: ! CALL function 'DoTest'
DEBUG: 2+ >>>> $result = "Switch …
Run Code Online (Sandbox Code Playgroud) 我想了解更多有关装配和拆卸的信息.我的目标是使用调试器(olly)修改特定地址的编写方式.优选地,通过将其递增一个数字(20,50等),我可以识别浮点数的地址(在这种情况下位于33B7420C
).
当我在内存访问写入时设置断点时,它会将我带到00809B2E
以下程序集:
FSTP DWORD PTR DS:[ESI+1224]
它究竟在这个地址做了什么?我知道FPU寄存器有我正在寻找的号码,但不确定这个地址在做什么.
我最接近谷歌搜索的是: MOV EAX,DWORD PTR DS:[ESI]是什么意思,它有什么作用?
寄存器的副本显示以下内容:
EAX 00000000
ECX 00A16E40 EZ.00A16E40
EDX FFFFFFFF
EBX 33B74578
ESP 0018FA90
EBP 00000000
ESI 33B72FE8
EDI 33B74578
EIP 00809B2E <EZ.Breakpoint for time>
C 0 ES 002B 32bit 0(FFFFFFFF)
P 0 CS 0023 32bit 0(FFFFFFFF)
A 0 SS 002B 32bit 0(FFFFFFFF)
Z 0 DS 002B 32bit 0(FFFFFFFF)
S 0 FS 0053 32bit 7EFDD000(FFF)
T 0 GS 002B 32bit 0(FFFFFFFF)
D 0
O 0 LastErr …
Run Code Online (Sandbox Code Playgroud) 我试图在开源客户端应用程序中添加有关SOAP错误的更多信息.客户端设置为在遇到任何SOAP故障时调用"HandleFault".Handle Fault方法如下所示:
public static void HandleFault(Message message) {
MessageFault fault = MessageFault.CreateFault(message, Int32.MaxValue);
throw System.ServiceModel.FaultException.CreateFault(fault,
typeof(PermissionDeniedFault),
typeof(EndpointUnavailable),
typeof(InvalidRepresentation),
typeof(UnwillingToPerformFault),
typeof(CannotProcessFilter),
typeof(AnonymousInteractionRequiredFault)
);
}
Run Code Online (Sandbox Code Playgroud)
以下是SOAP Fault的一部分,当我尝试执行诸如从客户端将电话号码更改为无效格式之类的操作时,将其作为"消息"传递.
<s:Body u:Id="_2">
<Fault xmlns="http://www.w3.org/2003/05/soap-envelope">
<Code>
<Value>Sender</Value>
<Subcode>
<Value xmlns:a="http://schemas.xmlsoap.org/ws/2004/09/transfer">a:InvalidRepresentation</Value>
</Subcode>
</Code>
<Reason>
<Text xml:lang="en-US">The request message contains errors that prevent processing the request.</Text>
</Reason>
<Detail>
<RepresentationFailures xmlns="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AttributeRepresentationFailure>
<AttributeType>OfficePhone</AttributeType>
<AttributeValue>(123)456-7890</AttributeValue>
<AttributeFailureCode>ValueViolatesRegularExpression</AttributeFailureCode>
<AdditionalTextDetails>The specified attribute value does not satisfy the regular expression.</AdditionalTextDetails>
</AttributeRepresentationFailure>
<CorrelationId>11042dda-3ce9-4563-b59e-d1c1355819a4</CorrelationId>
</RepresentationFailures>
</Detail>
</Fault>
Run Code Online (Sandbox Code Playgroud)
每当遇到该Fault时,客户端只返回"请求消息包含阻止处理请求的错误.",我想在客户端重新抛出异常之前包含" AttributeRepresentationFailure "节点和子节点.
我理解它的方式是我需要定义一个Fault类,其中包含要解除序列化的细节,以便对"CreateFault"的调用可以返回一个.我已经阅读了http://msdn.microsoft.com/en-us/library/ms733841.aspx但我只是不明白如何定义类,以便客户端知道抛出了什么类型的错误.
UPDATE …
我构建了一个Android应用程序,可以自动登录到特定的Guest无线网络.即使未显示/运行UI/Activity,我也希望此应用程序能够正常运行.
目前它似乎运作良好,但我质疑设计的后勤.我的问题是:
该应用程序有3个组件:
广播接收器 - 这是大部分工作.3.
更新以包括列出对象的空白/空属性
抱歉标题,不知道如何标记这个问题。我想表达一个 Dictionary 对象列表,其中 Key 作为标题/属性,Value 作为标题/属性的值。
例如,采用以下 PoSH 代码
$obj1 = new-object object | select Data; $obj1.Data = @{"header1"="Value1";"header2"="Value2";}
$obj2 = new-object object | select Data; $obj2.Data = @{"header1"="ValueA";"header2"="ValueB";}
$obj3 = new-object object | select Data; $obj3.Data = @{"header1"="Value1";"header3"="ValueC";}
$tmp = @($obj1,$obj2,$obj3)
Run Code Online (Sandbox Code Playgroud)
$tmp
然后看起来像下面这样:
Data
----
{header2, header1}
{header2, header1}
{header3, header1}
Run Code Online (Sandbox Code Playgroud)
$tmp | select -Expand Data
得到以下有用信息
Name Value
---- -----
header2 Value2
header1 Value1
header2 ValueB
header1 ValueA
header3 ValueC
header1 Value1
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以旋转数据并将名称转换为属性(或标题)并用值表示它们,即
header1 header2 header3
---- …
Run Code Online (Sandbox Code Playgroud) powershell ×2
android ×1
assembly ×1
c# ×1
debugging ×1
dictionary ×1
fault ×1
formatting ×1
ollydbg ×1
soap ×1
wcf ×1