Weekend Scripter: Using PowerShell to Aid in Security Forensics

Weekend Scripter: Using PowerShell to Aid in Security Forensics

Rate This
  • Comments 6

Summary: Guest blogger, Will Steele, discusses using Windows PowerShell to aid with security forensics.

Microsoft Scripting Guy, Ed Wilson, is here. I have had many interesting email threads with Will Steele, and I have even spoken at the Dallas Fort Worth PowerShell User Group via Live Meeting. Therefore, it is with great pride that I introduce Will Steele.

Photo of Will Steele

Will Steele live near Dallas, Texas with his wife and three kids. He works as a senior network analyst at a financial services provider and he manages a document imaging system with a heavy investment in Microsoft enterprise technologies. Last year Will started the Dallas-Fort Worth PowerShell users group, and he contributes to the Windows PowerShell community in forums and through his blog. 

Blog: Another computer blog

Take it away Will…

Here’s a hypothetical thought about how Windows PowerShell can help in forensics registry analysis. The layout: You are a systems admin for a large IT corporation. You learn that a spreadsheet containing highly sensitive information was accessed without permission by a server in your group the previous day. Your task? Verify who opened it with one condition: you can’t use any non-Microsoft tools. You start by coming up with two simple questions:

  • Who accessed the server within the past 24 hours?
  • How, when, and where was the file accessed?

Some logs indicated which machine accessed the file, but didn’t indicate the user. Only a handful of people are now possible candidates. The number of folks with full administrative rights and access to the servers is small. Conferring with your manager about who was working yesterday, you come up with a list of four possible.

Getting down to work, you launch Windows PowerShell and plan to keep an audit trail of what you do. A log will serve perfectly as documentation of your research, so, you run this command:

md C:\research

Start-Transcript –Path C:\research\analysis.log

You then decide to see if any of these people were out of the office during the time of the incident. Remoting was enabled on your domain for all of your administrators, so, their workstations would allow you to query the workstation logs. You need an event log query to develop a timeline of log on/log off events and run it against the server. Because all the workstations run Windows 7, you use this to check for logon/logoff event IDs:

get-winevent -FilterHashTable @{LogName='Security'; StartTime='6/27/2012 12:00:00am'; ID=@(4624,4625,4634,4647,4648)} |

select timecreated,id

To identify which people you may need to look at more closely, you remotely query each machine to build a cross reference based on logon/logoffs. To save typing, you store the hash table from your server search as a $eventhashtable variable and pass it to the Get-WinEvent cmdlet inside a loop to check the four workstations.

$eventhashtable = @{LogName='Security'; StartTime='6/27/2012 12:00:00am'; ID=@(4624,4625,4634,4647,4648)};

'workstation01', 'workstation02', 'workstation03', 'workstation04' | % {

            Write “Retrieving logs for $_ at $(Get-Date)”;

            get-winevent –FilterHashTable $eventhashtable | select timecreated,id;

}

Moving on to the server, you learn that it hasn’t been rebooted since last night. This increases the likelihood that the registry still contains pertinent information. You now turn to the machine to get more details. First things first: getting to the machine without arousing suspicion. Thankfully, in Windows PowerShell, this is a trivial task.

New-PSSession -ComputerName server

To determine which hives to look at, you check the IDs for verification. This command will list all users on the machine by name and SID:

if(-not(Test-Path HKU:\))

{          

            New-PSDrive HKU Registry HKEY_USERS

}

 

dir HKU:\ |

Where {($_.Name -match 'S-1-5-[0-2][0-2]-') -and ($_.Name -notmatch '_Classes')} |

Select PSChildName |

% {

            (([ADSI] ("LDAP://<SID=" + $_.PSChildName + ">")).userPrincipalName -split '@')[0] + " - " + $_.PSChildName

}

This loads the HKEY_USERS hive as a PSDrive and passes the SID values to the domain controller via an ADSI LDAP call, which returns the UserPrincipalName. You know that there’s a good chance the UserPrincipalName will match the name of the C:\Users\<profile> on the server. The command returns the following information.

admin01 - S-1-5-21-123456789-1234567890-1234567890-8901

admin02 - S-1-5-21-123456789-1234567890-1234567890-8902

admin03 - S-1-5-21-123456789-1234567890-1234567890-8903

admin04 - S-1-5-21-123456789-1234567890-1234567890-8904

superadminjrich - S-1-5-21-123456789-1234567890-1234567890-1472

superadminjmiller - S-1-5-21-123456789-1234567890-1234567890-1567

superadminmcruz - S-1-5-21-123456789-1234567890-1234567890-3245

To double-check these users, you run a Get-WmiObject cmdlet as a sanity check.

Get-WmiObject –Class Win32_NetworkLoginProfile | select caption,lastlogon

The following WMI result set verifies that your list is valid.

caption                           lastlogon

-------                           ---------

NT AUTHORITY\SYSTEM

NT AUTHORITY\LOCAL SERVICE

NT AUTHORITY\NETWORK SERVICE

Admin01                           20120620095738.000000-480

Admin02                           20120226122356.000000-480

Admin03                           20120627144745.000000-480

Admin04                           20120627150336.000000-480

superadminjrich                       20120313150319.000000-480

superadminjmiller                      20120627145121.000000-480

superadminmcruz                       20120417020307.000000-480

The four accounts in question do have local profile data on the server, so, you move into phase 2: find out when and where the file was accessed on the server. Noticing that Admin01 and Admin02 hadn’t logged on to the server recently eliminates them. Rather than work directly against the hives on the live server, you copy NTUSER.DAT files and disconnect from the server:

'admin03','admin04' |

% {

            md "C:\research\$_"

            copy "\\server\c$\users\$_\ntuser.dat" "C:\research\$_"

}

Exit-PSSession

To start exploring the files, you need to load them into your current session. This old reg.exe command does the trick:

reg load HKLM\admin03 C:\research\admin03\ntuser.dat

Admin03’s hive now can be accessed via your PSSession under HKLM:\admin03. This way, you can explore their profile as if it were yours. To be sure this worked as expected, you check with regedit.

Image of menu

Switching over to Windows PowerShell, you start by examining most recently used (MRU) lists for this user. You recall that your manager mentioned a spreadsheet, so you look at several keys without finding the file. Finally, you find a key that piques your curiosity:

HKLM:\admin03\Software\Microsoft\Office\14.0\Excel\File MRU

Exploring the contents of the key is as simple as running this command:

PS HKLM:\admin03\Software\Microsoft\Office\14.0\Excel\File MRU > Get-ItemProperty .

When run, it produces this:

  Hive: HKEY_LOCAL_MACHINE\admin03\Software\Microsoft\Office\14.0\Excel

Name              Property

----              --------

File MRU            Max Display : 25

                Item 1   : [F00000000][T01CD5496156B3EF0][O00000000]*C:\Data\Documents\Powershell\Projects\Encoding\FormatTable.xlsx

You notice some weird values prefixing the file paths. Apparently the bracketed values are metadata for Excel. Interestingly, [T01CD5496156B3EF0] is a non-standard 64-bit Windows date and time stamp that is stored as hexadecimal. To convert it from the registry value to a [DateTime] object you use the following:

PS HKLM:\admin03\Software\Microsoft\Office\14.0\Excel\File MRU> Get-ItemProperty . | `

select 'item *' | `

% {$_ -split '\[T'} | % {$_ -split '\]\['} | Where {$_ -notmatch '\\'} | `

% {([Datetime][Convert]::ToInt64($_,16)).AddHours(-8)}

A list of times ordered according to how they appear in the key is produced, but you notice that there is something weird. All the time stamps are exactly 1600 years (and a few hours) off:

Wednesday, June 27, 0412 12:53:04 PM

You recall .NET DateTime objects presume January 1, 1600 as a start date. You accommodate for this with this change:

% {[DateTime]::FromFileTime([Convert]::ToInt64($_,16))}

There is proof that the file was opened when Admin03 was on call:

Wednesday, June 27, 2012 12:53:04 PM

To validate your research, some C# gets LastWriteTimes directly from the registry:

$signature = @"

using Microsoft.Win32.SafeHandles;

using System;

using System.Runtime.InteropServices;

using System.Text;

 

namespace Forensics

{

  public class Registry

  {

    private static readonly IntPtr HKEY_DYN_DATA = new IntPtr(-2147483642);

    private static readonly IntPtr HKEY_CURRENT_CONFIG = new IntPtr(-2147483643);

    private static readonly IntPtr HKEY_PERFORMANCE_DATA = new IntPtr(-2147483644);

    private static readonly IntPtr HKEY_USERS = new IntPtr(-2147483645);

    private static readonly IntPtr HKEY_LOCAL_MACHINE = new IntPtr(-2147483646);

    private static readonly IntPtr HKEY_CURRENT_USER = new IntPtr(-2147483647);

    private static readonly IntPtr HKEY_CLASSES_ROOT = new IntPtr(-2147483648);

                                               

    private const int KEY_QUERY_VALUE = 1;

    private const int KEY_SET_VALUE = 2;

    private const int KEY_CREATE_SUB_KEY = 4;

    private const int KEY_ENUMERATE_SUB_KEYS = 8;

    private const int KEY_NOTIFY = 16;

    private const int KEY_CREATE_LINK = 32;

    private const int KEY_WRITE = 0x20006;

    private const int KEY_READ = 0x20019;

    private const int KEY_ALL_ACCESS = 0xF003F;

    public DateTime last;

                                               

    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]

    private static extern int RegOpenKeyEx(

                SafeRegistryHandle hKey,

                string lpSubKey,

                uint ulOptions,

                uint samDesired,

                out SafeRegistryHandle hkResult

                                                );

                                               

    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]

    private static extern int RegQueryInfoKey(

                SafeRegistryHandle hKey,

                StringBuilder lpClass,

                uint[] lpcbClass,

                IntPtr lpReserved_MustBeZero,

                ref uint lpcSubKeys,

                uint[] lpcbMaxSubKeyLen,

                uint[] lpcbMaxClassLen,

                ref uint lpcValues,

                uint[] lpcbMaxValueNameLen,

                uint[] lpcbMaxValueLen,

                uint[] lpcbSecurityDescriptor,

                uint[] lpftLastWriteTime

                                                );

                                               

    public static DateTime GetRegKeyLastWriteTime(string regkeyname)

    {

      string[] parts = regkeyname.Split('\\');

      string sHive = parts[0];

      string[] SubkeyParts = new string[parts.Length - 1];

      Array.Copy(parts, 1, SubkeyParts, 0, SubkeyParts.Length);

      string sSubKey = string.Join("\\", SubkeyParts);

      SafeRegistryHandle hRootKey = null;

      switch (sHive)

      {

        case "HKEY_CLASSES_ROOT": hRootKey = new SafeRegistryHandle(HKEY_CLASSES_ROOT, true); break;

        case "HKEY_CURRENT_USER": hRootKey = new SafeRegistryHandle(HKEY_CURRENT_USER, true); break;

        case "HKEY_LOCAL_MACHINE": hRootKey = new SafeRegistryHandle(HKEY_LOCAL_MACHINE, true); break;

        case "HKEY_USERS": hRootKey = new SafeRegistryHandle(HKEY_USERS, true); break;

        case "HKEY_PERFORMANCE_DATA": hRootKey = new SafeRegistryHandle(HKEY_PERFORMANCE_DATA, true); break;

        case "HKEY_CURRENT_CONFIG": hRootKey = new SafeRegistryHandle(HKEY_CURRENT_CONFIG, true); break;

        case "HKEY_DYN_DATA": hRootKey = new SafeRegistryHandle(HKEY_DYN_DATA, true); break;

      }

      try

      {

        SafeRegistryHandle hSubKey = null;

        int iErrorCode = RegOpenKeyEx(hRootKey, sSubKey, 0, KEY_READ, out hSubKey);

        uint lpcSubKeys = 0;

        uint lpcValues = 0;

        uint[] lpftLastWriteTime = new uint[2];

        iErrorCode = Registry.RegQueryInfoKey(hSubKey, null, null, IntPtr.Zero,

        ref lpcSubKeys, null, null, ref lpcValues, null, null, null, lpftLastWriteTime);

        long LastWriteTime = (((long)lpftLastWriteTime[1]) << 32) + lpftLastWriteTime[0];

        DateTime lastWrite = DateTime.FromFileTime(LastWriteTime);

        return lastWrite;

      }

      finally

      {

        if (hRootKey != null && !hRootKey.IsClosed)

        {

          hRootKey.Close();

        }

      }

    }

  }

                       

  public sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid

  {

    public SafeRegistryHandle() : base(true) { }

    public SafeRegistryHandle(IntPtr preexistingHandle, bool ownsHandle)

      : base(ownsHandle)

    {

      base.SetHandle(preexistingHandle);

    }

                                               

    [DllImport("advapi32.dll")]

    private static extern int RegCloseKey(IntPtr hKey);

    protected override bool ReleaseHandle()

    {

      return (RegCloseKey(base.handle) == 0);

    }

  }

}

"@

Searching against the registry key in question to validate your findings, you add the new type to your session:

Add-Type -TypeDefinition $signature -Language CSharp -PassThru | Out-Null;

And you search for LastWriteTime values:

 dir 'HKLM:\admin03\Software\Microsoft\Office\14.0\Excel' |

% { ($_.PSPath -split ':')[2] } |

Where {[Forensics.Registry]::GetRegKeyLastWriteTime($_) -gt (Get-Date).AddDays(-2)} |

% { "$($_): $([Forensics.Registry]::GetRegKeyLastWriteTime($_))"};

This outputs the following:

HKEY_LOCAL_MACHINE\admin03\Software\Microsoft\Office\14.0\Excel\File MRU: 06/27/2012 13:53:04

HKEY_LOCAL_MACHINE\admin03\Software\Microsoft\Office\14.0\Excel\Options: 06/27/2012 08:47:50

HKEY_LOCAL_MACHINE\admin03\Software\Microsoft\Office\14.0\Excel\Place MRU: 06/27/2012 13:53:04

HKEY_LOCAL_MACHINE\admin03\Software\Microsoft\Office\14.0\Excel\Resiliency: 06/27/2012 08:47:50

The MRU time stamp confirms overlaps with your findings, supports your conclusion, and gives you evidence that you can hand over to your manager about exactly when and what had happened.

~Will

Thank you, Will, for sharing your time and knowledge. It is a great blog post.

I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at scripter@microsoft.com, or post your questions on the Official Scripting Guys Forum. See you tomorrow. Until then, peace.

Ed Wilson, Microsoft Scripting Guy 

Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post
  • Thanks for sharing this Will. This post will come in handy in the field. Cheers.

  • Hi Will,

    an excellent article about a very interesting way of gathering information!

    It is a bit difficult to get at the C# code but it shows again, that we can extend Powershell

    with .Net classes to integrate the missing functions.

    That's a good example of how to do this.

    Thanks, Klaus.

  • Hello, these Chinese information may be useful to you

    If you receive the letter can not understand, please right-click the text, and then

    select Chinese, if not, is because your mailbox does not support Chinese, you can

    this letter forwarding to another mailbox,then you can read.

      Hello, Li Changjiang, the couple  have a harmful companies。Business throughout

    the country, including some abroad, specializing in harmful work.Specializing in

    harm.Li Changjiang, the couple sent follow-up survey each other.Intimidation,

    aggressive behavior, seriously affect the social order.Li Changjiang, couples home

    in the West Award Street Shenyang Liaoning China .Li Changjiang, the couple tried to

    cover up their harmful behavior.And the various scandals of the girl, Li Xiao Ye,

    divorced.Li Changjiang,the couple and Li Xiao Ye photos.

    李长江两口子和姑娘李晓晔的毁人公司

    您好  

       臭名诏著李长江两口子和姑娘李晓晔表面做别的,背后有一家毁人性质的公司,业务遍布全

    国,包括部分国外,专门从事毁人工作。李长江两口子和姑娘李晓晔的毁人公司派人跟踪调查监

    视被毁对象,威胁恐吓,寻衅闹事,严重影响社会治安。李长江两口子和姑娘李晓晔的毁人公司

    人数达到上万人,李长江两口子和姑娘李晓晔的毁人公司要把世界各国搅乱,也要把中国搅乱,

    李长江两口子和姑娘李晓晔公司还专门冒充别人干坏事然后污陷别人干的毁人名声,李长江两口

    子和姑娘李晓晔的公司还演戏,收买,挑拨制造各种事件各种误会挑拨别人关系,李长江两口子

    和姑娘李晓晔公司还雇人或收买人假装唠克故意毁人声誉还雇人或收买人在背后故意用手指人家

    给别人看等手段。李长江两口子和姑娘李晓晔还特别喜欢喊别人色情什么的。李长江两口子和姑

    娘李晓晔还雇人,收买或威胁你的熟人,亲戚在你侧面,后面嘎巴嘴,假装干点什么安排各种假

    像给别人看。李长江两口子和姑娘李晓晔还找和你长的像的人冒充你干点什么来陷害你。李长江

    两口子和姑娘李晓晔的公司还伪造你的车冒充你的车干点什么来陷害你。李长江两口子和姑娘李

    晓晔还伪造,合成各种图像视频声音给别人看陷害你。李长江两口子和姑娘李晓晔的公司还使用

    各种有毒气体害人。被李长江两口子和姑娘李晓晔收买的人跟本不知道已被李长江两口子和姑娘

    李晓晔或是同伙用微型摄像机,数码望远摄像机拍下录像或是录了音,留下了交易和毁人的证据

    。李长江两口子和姑娘李晓晔害怕被那些被收买的人给出卖还会跟踪监视他们。李长江两口子和

    姑娘李晓晔还在网上毁人,传播各种真的或PS过的图片视频造谣生事。 李长江两口子和姑娘李

    晓晔还装好人找各方面的人看那些被害人怎么报复李长江两口子和姑娘李晓晔全家的。李长江两

    口子和姑娘李晓晔伪君子,小人,耍心计,每天都找一些人看,变着法的忽悠给这些人,今天给

    这些人这么忽悠,明天给那些人那么忽悠。或者这几天给这些人这么忽悠,那几天给那些人那么

    忽悠。故意每一个动作,声音都变着法的忽悠,说什么也咬文嚼字的忽悠。

       李长江两口子和姑娘李晓晔不会说话不会办事,就会耍心计,喜欢挑拨别人关系,喜欢试探

    ,暗示,挑拨等手段,李长江两口子和姑娘李晓晔故意看别人表情,动作,听声音故意说别人暗

    示什么来挑拨大家关系。李长江两口子和姑娘李晓晔故意分析别人心理,怎么能引起制造误会怎

    么能挑拨关系就怎么分析,无事生非故意挑拨大家关系。

       李长江两口子和姑娘李晓晔的毁人行为就是在家里进行指挥布局的。李长江两口子和姑娘李

    晓晔家在沈阳铁西奖工街。李长江两口子和姑娘李晓晔挣的钱大部分都给当亲戚的官员阉强,一

    汽贸易,沈阳Fm98.6,张东毅,董晓,童谣,李淑云,李厚朴,徐少达,史联文,郑慧蘶

    沈阳建筑大学,张福昌,吴玉厚,郑朝方,刘娇,刘承宪,刘春兰,刘宁,孙常春,许元元,李

    伟,付春菊,李一鸣,时娇,李春妮,方勃,李晓桐,杨爽,李卫,冼宁,韩立伟,孙海义,丁

    向群,张智博,朱月秋,刘万东,卢雁,孙元元,许文举,刘剑,高明,许景科,Valery

    Telichenko,蒋大民,毕岩,许溪沙,柳建军,柳建国,杜晶波,吴村,李冬梅,李晓,李孟歆

    ,李波,李朔,李海燕,李妙,林波,刘玉梅,刘楚男,郑时龄,张巨松,何敏,纪玉杰,梅竹

    ,江舟,罗文才,孙梦筱,沙漠,杜松,梁潇,黄海涛,向上,宋玉龙,李闫岩,刘阳,宋朗,

    卢元山,张男,杨明远,李楠,吴云飞,佟曾,刘悦,穆存远,朱小地,郑可,张在元,郜世杰

    ,曾繁柏,黄向如,巢盛玉,高凤阳,梁文杰,李青,张毓峰,杨旭东,高晓江,刘伯英,孟岩

    ,黄向明,曾尤,宋源,刘柱,张万庆,高晓松,孙小巍,申晴,高岩,刘杰民,高飞,任光月

    ,孙爽,闻邦椿,刘松,由世宽,张海敏,寇有存,杨晓晨,肖莹,杜庚,田溪鹤,张照博,牟

    月,黎香,张清海,张涛,张芸栗,张云龙,梁剑樵,张嵩,蔡波,孙晓,杜冰,高娜,刘博,

    张晓明,CG风暴社团,D6音乐社,复空间动漫社团,街盟社团,兰亭书法协会,微娲时尚社团,

    依心社,梦犁歌,刘恩芳,Moscow State onstruction University

    沈阳音乐学院,林林,李晓阳,张力伟,朱玉,肖婀娜,郑晓丹,郭淳,申淑征,董德君,张继

    春,房长永,李响,韩春凌,姚艳秋,柳文杰,刘寒力,邓季芳,宋大龙,高亮,高淑娟,高忠

    悦,高虹,房晓敏,柴永柏,郭鸣,柳文杰,刘云燕,杨园,彭永启,张卫宁,张芳,郭春敏,

    郭凯,韩杰,李晓军,李秀敏,李晓育,高晓松,卢晓茹,赵燕,阎成立,杨平,刘捷,倪妮,

    权秦成,宋施慧,孙博,杨娜妮,曹洋,杜爱民,高毅,耿悦,韩杰,韩淼,韩秀坤,何悦,蒋

    凤祥,孙传桐,孙鸣,孙岩,李岚枫,李抒丹,李依桐,李正根,林文娟,张晓燕,刘文,孟妍

    ,穆倩,潘黎,庞勃,刘倩,曲歌,邵申泓,束谦,吴秀萍,张苒秋,刘宏,张一茵,刘畅,孙

    悦,刘淼,阿杜,黄淑惠,李谷一,Mr.King乐队,BALANCE乐队,爵士乐队,贵族乐队,Drram

    sound乐队,融合乐队,cool dream乐队,机枪柠檬乐队,宋玉静,李倩,黄俐娜,龙飞,谭迎

    ,吕常伟,孙博,谭咏麟,许嵩,沙国利,范海东,秦咏城,张楚格,李建科,张崇,孟繁菊,

    孙莹迎,庞龙,李劫夫,张咪,巩贺,汤潮,丁爽,韩伟,刘聪,张娜,董艳,景抒展,黄勃,

    郭盈莹,孙楠,李畅,毛宁,曾静,李静,李阳,杜鸣心,梦然,龙泽,黄伶娜,权泉,高山林

    ,周艳泓,朱永龙,张广天,郭策,房祖名,萧梅,李敏,罗艺峰,孙晓春,李娟,朱玉,孙汝

    杰,董洁,秦天,李易峰,卢庚戌,樊明玉,毕晓世,李纯一,吴晓云,孙博,宋洋,杨壹惟,

    覃元隆,李传韵,宋祖英,张蔷,小柯,梁寒光,李焕之,张也,谷音,鸣戈,阿里朗,蔡晓,

    付笛声,高晓松,黄圣依,张玉梅,老狼,黎姿,李孝利,梁洛施,刘欢,毛阿敏,苏打绿,张

    柏芝,SHE,李景苏,张世澄,薛冠男,潘一鸣,向涛,太晓光,李思,董旖旎,苗萌,凌萧川

    ,石倩,孙鹤,张娇,满利,李梦汐,李阳,李月,朱博,丁馨,刘晓菲,丁艺媛,曹正宣,丁

    冬,何怡坤,李娜,郑招娣,张谦,张滢,高慧,蒋诗,李静池,佟蔷,高晨,曲彦斌,曹丁,

    孙友,沈阳师范大学,林群,孙革,孙河川,张维平,包玉秋,刘杰,朱永春,那杰,张宜,张

    君,杨明,秦晓波,沈阳大学,张世斌,李海明,张强,季晓冬,梁迪,鲁迅美术学院,李浴,

    孙小川,孙成义,林简娇,杜凌,辽宁大学,郭长义,李淑云,张贺明,东北大学,张国臣,高

    扬,韩春燕,许茜,焦明海,井元伟,闻邦椿,张嗣瀛,Gnesins Russian Academy of Music

    丹东代任静,石光,孙轶,于梅,徐春光,牛向东,张林,刘焕友,谷桂林,张杰先,杨晓妹,

    郭连胜,崔晓峰,吴远新,孙成章

    cctv1,cctv2,cctv3,cctv4,cctv5,cctv6性交,罗明,刘云山,柳斌杰,李伟,李咏,林晓阳,

    魏晓南,晨阳,张宁,童可欣,孙正平,杜悦性交,方钢,郭艳,杨柳,小光,许可性交,方静

    性交,段暄,尤宁,李诗诗性交,筱漫性交,陈滢,艾婷婷,海东,郝峻,何姗姗性交,杨一性

    交,孙扬,崔征,刘西,刘迎,丁曦,章伟秋,李琦,李伟林性交,李宣性交,李冠男,秦宁,

    吴月佳,谢清,张斌,白岩松,刘建宏,邵圣懿,申方剑,陶伟性交,欧阳智薇,蔚宁,曲向东

    ,潘登,Director,海东,杨帆,韩斌,海悦,许正宏,刘壮,刘巍,刘迎,迟忠波,许迅,杨

    健,吴为,董卿,孙燕,段译,白燕升,董艺,崔永元,劳春燕,张泉灵,杨一,曾湉,张纪中

    ,西游记,刘楠,严艺,郑莺燕,许可,杨艺,林永盛,许伟,绿泡泡,曹振,韩大壮,管文君

    ,何畅,刘洁,张燕妮,刘海涛,李娜,黄秋爽,hk吴克俭,香港大学,

    广东卫视,郑好,高妍,李佳,伦敦奥组委,奥运股,hk梁振英,hk谭志源,hkex香港交易所,

    深圳证券交易所,李泊溪,张明玉,张春,张维迎,张五常,朱敬一,郎咸平,李龙飞,粪友群

    蒋小涵政变,吴建国,申积军,朱生岭,曹伯如,林双先,刘洪深,苏树林,孙春兰,蒋经国,

    吴敦义,薄熙来,政大四姬,刘云山,黄小晶,卢展工,吴伯雄,刘训诚,苏增添,鞠维强,陈

    毓寰,林昌丛,张昌平,林致知,何立峰,陈文清,黄海莺,李川,张广敏,曹升,黄国亮,许

    晓东,林香娣,黄正风,李鸿阶,陈光毅,杨益民,刘可清,黄浦江,黄少萍,傅冬阳,邓本元

    ,许维泽,黄晓炎,李转生,福建setv,十大人物,恒安集团性交和樊登政变,梁章建,梁爱鲜

    ,梁多性交,蔡小伟,薛中文,孙捷敏,欧阳小波,吴建生,杨旭东,刘义萍,陈雁,蔡鹰,唐

    为权,吴乙平,刘毅,郑坚敏,林芝性交,薛晗喆,韩泽,杨洋,螳螂,张英,和其正牌,无限

    极牌,橡果国际购物,达利园牌,刘伟性交,曾峰性交,福茅窖酒,,李婷宜性交,陈超人,许

    晴,高圆圆,李冰冰,谷力,心相印牌,七度空间牌,好舒爽牌,刘莹,名牌协会,林力涵,肖

    承雄,林凌性交,祁菲性交,黄嶶,超能牌,绿箭牌,PEAK,李宁运动,安踏牌,Rain,娜拉,

    Orange,益达牌,劲牌,喜力牌,飞科牌,水井坊酒,李婧,管艺性交,郭涛性交,何悦,刘菲

    ,赵嫒,奥妙牌,戈凌蓝牌,飞亚达牌,李谷一,活佛,陈冲,林益世,许智杰,吴门忠,郑峰

    ,潘宁,李依晓,任航,张悦性交,刘菲,梁娜,杨毖性交,阿如娜性交,郭伟,崔喆性交,江

    中牌,袁国,杨英,黄小清性交,朱邦月,郎永淳,辣白菜,章联生,姗姗,黄佶,刘坚,杨扬

    ,丁小峰,优先乳牌,董宁,张峻,范幼龙,新爽歪歪牌,郑东波,任航,李季,刘扬,聊俊海

    ,郑海,郑微,张益闻,李依晓,东南造船厂,冠海造船厂,云敦牌,奥妙牌,李远方,詹以萱

    ,张长勇,张萍,张洋,杨悦,李申,伊利,林玉峰,林小强,吕斌,林侃,参灵草,黄晴性交

    ,黄水成,管乐,刘诗诗,鲁晓,刘冰,黄健,郑昭,阿水,宁国良,罗薇,郭彦均,妇炎洁,

    孙子涵,杜沁怡,飘柔牌,曲兆祥,罗永娟,司学懿,林洁,江洋,郑敏芳,唐湘龙,黄小柔,

    啸天,陈婷妃,梁静如,林俊杰,郑元畅,曲婉婷,陈才权,刘平,吴申,萧啬,刘君一,李兰

    ,曾峰,丁小峰,林冲,万峰,祝捷,易薇,姚晓燕,张洁,左雅晶,崔菁,高峰,梁婷婷,詹

    娜,郭子乾,小优,阿信,段宜康,陈汉典,李玉洁,吴苏婷,杨朝伟,刘毅,江凛,可肤冰肌

    白牌,达芙妮牌,中天妇幼,卡丁儿童用品,罗晓燕,陈燕慧,张茜,张升,张波,福建旅游,

    白菜牌农药,厨师,味中有毒食品,丁守中,李晨,章龄之性交,黄圣依性交,小S性交,黄存

    光,卡米曼,梅春,利郎牌,李晓枫,国丹白癜风,杨伟,百渡泉,拉索城堡酒,许嵩,郑茜,

    郑元畅,张宗元,歌达飞平板电脑,西岸传媒,谷粒多,盐典牌,陈姿性交,郑宁性交,李智性

    交,陈黎明性交,房一美性交,许杰性交,一戈性交,袁松,罗盈,吴燕燕,李小明,龙基机械

    ,龙岩牌,杰米熊牌,图图牌,雀氏牌,中能电气,吴育升,中绿食品,福建烟草,龙麟牌,如

    意情牌,爱登堡,休闲食品,大乘牌,灿坤牌,石狮牌,乡下厨房,益春牌,新概念学校,浪漫

    宣言牌,仙境牌,闽牛牌,竞渡牌,徐工集团,涌泉科技,冠捷电子,梅春牌,舒爽牌,浪漫公

    子,动感集团,惠泉牌,公方明,林师傅牌,张升,统一牌,三棵树涂料,李敏芬,正源饲料,

    港昌工贸,海壹牌,老人城牌,武夷米味精,阿一波食品,厨师食品,中盛粮油,好邻居食品,

    育生农牧,元洪面粉,高龙饲料,冠林科技,天使日用品,才子集团,国通信息科技,元力活性

    炭,亲亲牌,闽泉工艺,意百牌,吴伟苓,经纬集团,中能电气,国光电子科技,银象电器,春

    城水暧,阿沁,井柏然,依波牌,凯捷利电机,黄睿,泳春,张歆艺,天海电子,神蜂科技,李

    晓枫,柒牌,李沁橦,祝捷,赵屹鸥,赵赛男,赵涵朵,黄茏,蔡风莎,黄觉,武夷集团,张怀

    强,喜得龙集团,林益斌,谭岚,姚笛,周涛,丁可,黄少波,梁思捷,张勤,詹幼文,小白鼠

    ,向阳坊食品,郎牌特曲酒,三六一度国际,topsh牌,海壹食品饮料,春洪牌,味中味有毒食

    品,sandic牌,正大集团,千百娇牌,黄艳卉,石秀依,dina牌,haosha牌,丁晓峰,闽东电机

    ,三木集团,国脉科技,三农集团,南纺股份,东百集团,福建水泥,建筑科学设计研究院,晋

    江电力,国贸控股,能源集团,建工集团,十方控股,一木国际,世贸股份,闽东电力,纳川股

    份,日上集团,飞鹰塑胶,左岸牌,泰龙电力,明一婴幼儿营养品,厨师食品,泰山科技,国光

    电子,长江证券,新东方烹饪学校,郑秋生,吴木森,林建设,朱文彬,朱跃门,管涛,刘升,

    陈碌,邓茂林,林升泉,彭永树,刘浪,林国进,况毅,许伟,杨海,刘洪梅,蔡茂,都市传媒

    ,宏发电声股份,圣元电子,龙岩高岭土,福建师范大学,闽江学院,夏门大学,农林大学,福

    州大学,龙岩学院,西山学校,淡江中学校,北一女中学校,黄汉升,兰思仁,陈晓春,朱崇实

    ,刘塨,陈嘉庚,杨国豪,林晓峰,李永苍,黄子杰,李源江,陈晶,吴国,黄世忠,黄文澜,

    李春梅,史习江,梅明亮,肖毅,张伯楠,张清春,郑文伟,张文彬,一斯梅特,游小波,李敏

    ,刘立耘,曾楚元,张翔燕,谢若嫣,许海芳,福州一中,福州四中,福州三中,连江一中,晋

    江毓英中学,漳州一中,宁德一中,邵武一中,龙海一中,厦门一中,仙游一中,永春一中,龙

    岩一中,三明一中,融侨小学,屏西小学,江头第三小学,秀坂小学,临江中心幼儿园,育才幼

    儿园,苏村幼儿园,蓝天幼儿园,大地幼儿园,张厝中心幼儿园,赵本山,赵一涵,赵一楠,这

    些股东分成了,李长江两口子和姑娘李晓晔只留有几处房产,分别用当地亲戚的名字够买的房产

    。除了李长江两口子和姑娘李晓晔的几个亲戚外别人谁都不知道地址。等李长江两口子和姑娘李

    晓晔的毁人公司赚够钱后就会搬家。李长江两口子和姑娘李晓晔有间歇魔怔性精神病,李长江的

    姑娘李晓晔也有遗传。很早时很多人就通过各种方式传播李长江口子的犯罪行为和丑闻,网上一

    直流传李晓晔的乱伦照等。李晓晔就是个废物,什么也不会,李长江两口子和姑娘李晓晔就会收

    买或威胁人安排各种假象给别人看。李长江两口子和姑娘李晓晔极力掩饰李晓晔的各种丑闻,和

    离过婚。李长江两口子和姑娘李晓晔是伪君子,小人。李长江两口子和姑娘李晓晔厚颜无耻的掩

    饰自己的毁人行为和丑闻,李长江两口子和姑娘李晓晔的毁人公司还搬出当官员的亲戚掩饰。李

    长江两口子和姑娘李晓晔的毁人公司还毁企业,公司,单位的经济和有关的亲戚好友等。李长江

    两口子和姑娘李晓晔还指使人花钱收买来掩饰或是李长江两口子和姑娘李晓晔使用各种方式来掩

    饰。李长江两口子和姑娘李晓晔的行为早就被诊断为病态行为。而且李长江曾背着所有人秘密治

    疗很长一段时间并找到合适人选,此女以身怀数月,被李长江隐藏到一个岛国。

       李长江两口子和姑娘李晓晔毁人公司的大量受害者一直在暗地里对李长江两口子和姑娘李晓

    晔全家进行报复。李长江两口子和姑娘李晓晔啥也不会,就会挑拨陷害人。那些大量受害者用过

    一此高科技产品,脑电波扫描仪用来无线接收人的脑电波从脑电波中分离出思维信号,听觉信号

    ,视觉信号,记录在电脑上,也就是说,不管别人在想什么看见什么思考什么,只要通过脑电波

    扫描仪都可以读出你的想法。脑电波扫描仪可能不一定能买到,可以买一些同类产品改装。手机

    里都有蓝牙功能,可以在手机或在电脑里安装蓝牙探测软件就可以查出对方手机里所有资料。对

    方手机蓝牙功能关掉也可以探测到。红外透视仪,红外数码望远镜,X光透视仪,微波探测仪,

    微型摄像机,各种先进的窃听器,电脑电磁波外泄截取器。

       以上讲述属实,请防范李长江两口子和姑娘李晓晔的毁人行为。附上李长江两口子和姑娘李

    晓晔,全家的照片,特将李长江两口子和姑娘李晓晔的卑鄙下流无耻行为像全世界陆续群发,已

    经有成千上万的人参与了转发。此封信只发送一次,防止李长江两口子窃取盗用qq,邮箱冒充发

    信。

  • Thanks for the kind remarks gentlemen. Klaus, I agree, the ability to take .NET languages and extend PowerShell's functionality is one of its great features. Even if you do not understand every part of a C#, VB, or, JScript signature, PowerShell allows you take working code in other languages and apply them directly with very little effort. In my mind, I like to think of PowerShell as a .NET interpreter very much the same way F# has fsi.exe. Microsoft has done a great job allowing us to take existing code in other languages and run with it. This opens up many avenues which did not exist before.

  • Congratullations for the Blog and this post.

    I'm beginning my studies on PowerShell and you're helping me A LOT :D

    thx

  • Interesting stuff as always.

Page 1 of 1 (6 items)