小编The*_*ith的帖子

Powershell"Set-PSDebug -Trace 2"会导致意外结果

我有一个奇怪的问题,我在设置"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)

powershell switch-statement script-debugging

7
推荐指数
1
解决办法
866
查看次数

什么是FSTP DWORD PTR DS:[ESI + 1224]呢?

我想了解更多有关装配和拆卸的信息.我的目标是使用调试器(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)

debugging assembly cpu-registers ollydbg

6
推荐指数
1
解决办法
1万
查看次数

如何处理WCF故障异常

我试图在开源客户端应用程序中添加有关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 …

c# wcf soap fault

6
推荐指数
1
解决办法
3万
查看次数

正确使用后台服务/广播接收器

我构建了一个Android应用程序,可以自动登录到特定的Guest无线网络.即使未显示/运行UI/Activity,我也希望此应用程序能够正常运行.

目前它似乎运作良好,但我质疑设计的后勤.我的问题是:

  • 我甚至需要服务吗?
  • 我的设计倒退了吗?广播接收者是否应该拨打该服务进行工作?
  • 您可以在清单中注册广播接收器而不必在代码中完全调用它吗?
  • 多次调用startService()是不是很糟糕?我知道只有一个服务运行,但在创建服务之前如何检查服务是否已经运行?

该应用程序有3个组件:

  1. 活动 - 具有用于显示当前网络信息的GUI和关闭/"停止服务"按钮
  2. 服务 - 所有这些服务都是注册广播接收器
  3. 广播接收器 - 这是大部分工作.3.

    • Activity的onCreate()调用Context.startService()
    • Service onCreate()创建一个通知图标并注册广播接收器
    • 广播接收器onReceive()检查网络状态是否已更改意图,然后检查当前是否连接到特定SSID,然后调用我注册/检查是否经过身份验证的特殊类.

android broadcastreceiver android-service

5
推荐指数
1
解决办法
2067
查看次数

如何将字典列表分解为格式表中的标题

更新以包括列出对象的空白/空属性

抱歉标题,不知道如何标记这个问题。我想表达一个 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 formatting dictionary

4
推荐指数
1
解决办法
2239
查看次数