| Author | Messages | |
bsonposh
Posts:171
 | | 04/29/2008 5:57 PM |
| That is not a WMI thing... That is a vbscript thing.
IMO: Pick a languages (Powershell of course ) Learn basic WMI design (how it works generically) Learn basic .NET Your golden. Plenty of examples and people to ask questions of <cough>me</cough>
On Tue, Apr 29, 2008 at 5:44 PM, Susan Bradley, CPA aka Ebitz - SBS Rocks [MVP] <sbradcpa@pacbell.net> wrote:
> We call that a wizard in SBSland. ;-) > > Okay but what if one wants to better understand that strComputer = "." > means set to local computer. Which place/SDK/book/msdn site is the best > place to better understand what scriptomatic is doing? (besides googling > each term)? > > > > joe wrote: > > I have found Scriptomatic to be pretty helpful for finding stuff in the > WMI arena. It also generates perl script for you.  > > Created in seconds.... > > use strict; > use Win32: LE('in'); > > use constant wbemFlagReturnImmediately => 0x10; > use constant wbemFlagForwardOnly => 0x20; > > my @computers = ("SFMXP32"); > foreach my $computer (@computers) { > print "\n"; > print "==========================================\n"; > print "Computer: $computer\n"; > print "==========================================\n"; > > my $objWMIService = > Win32: LE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI > connection failed.\n"; > my $colItems = $objWMIService->ExecQuery("SELECT * FROM Win32_Process", > "WQL", > wbemFlagReturnImmediately | wbemFlagForwardOnly); > > foreach my $objItem (in $colItems) { > print "Caption: $objItem->{Caption}\n"; > print "CommandLine: $objItem->{CommandLine}\n"; > print "CreationClassName: $objItem->{CreationClassName}\n"; > print "CreationDate: $objItem->{CreationDate}\n"; > print "CSCreationClassName: $objItem->{CSCreationClassName}\n"; > print "CSName: $objItem->{CSName}\n"; > print "Description: $objItem->{Description}\n"; > print "ExecutablePath: $objItem->{ExecutablePath}\n"; > print "ExecutionState: $objItem->{ExecutionState}\n"; > print "Handle: $objItem->{Handle}\n"; > print "HandleCount: $objItem->{HandleCount}\n"; > print "InstallDate: $objItem->{InstallDate}\n"; > print "KernelModeTime: $objItem->{KernelModeTime}\n"; > print "MaximumWorkingSetSize: $objItem->{MaximumWorkingSetSize}\n"; > print "MinimumWorkingSetSize: $objItem->{MinimumWorkingSetSize}\n"; > print "Name: $objItem->{Name}\n"; > print "OSCreationClassName: $objItem->{OSCreationClassName}\n"; > print "OSName: $objItem->{OSName}\n"; > print "OtherOperationCount: $objItem->{OtherOperationCount}\n"; > print "OtherTransferCount: $objItem->{OtherTransferCount}\n"; > print "PageFaults: $objItem->{PageFaults}\n"; > print "PageFileUsage: $objItem->{PageFileUsage}\n"; > print "ParentProcessId: $objItem->{ParentProcessId}\n"; > print "PeakPageFileUsage: $objItem->{PeakPageFileUsage}\n"; > print "PeakVirtualSize: $objItem->{PeakVirtualSize}\n"; > print "PeakWorkingSetSize: $objItem->{PeakWorkingSetSize}\n"; > print "Priority: $objItem->{Priority}\n"; > print "PrivatePageCount: $objItem->{PrivatePageCount}\n"; > print "ProcessId: $objItem->{ProcessId}\n"; > print "QuotaNonPagedPoolUsage: > $objItem->{QuotaNonPagedPoolUsage}\n"; > print "QuotaPagedPoolUsage: $objItem->{QuotaPagedPoolUsage}\n"; > print "QuotaPeakNonPagedPoolUsage: > $objItem->{QuotaPeakNonPagedPoolUsage}\n"; > print "QuotaPeakPagedPoolUsage: > $objItem->{QuotaPeakPagedPoolUsage}\n"; > print "ReadOperationCount: $objItem->{ReadOperationCount}\n"; > print "ReadTransferCount: $objItem->{ReadTransferCount}\n"; > print "SessionId: $objItem->{SessionId}\n"; > print "Status: $objItem->{Status}\n"; > print "TerminationDate: $objItem->{TerminationDate}\n"; > print "ThreadCount: $objItem->{ThreadCount}\n"; > print "UserModeTime: $objItem->{UserModeTime}\n"; > print "VirtualSize: $objItem->{VirtualSize}\n"; > print "WindowsVersion: $objItem->{WindowsVersion}\n"; > print "WorkingSetSize: $objItem->{WorkingSetSize}\n"; > print "WriteOperationCount: $objItem->{WriteOperationCount}\n"; > print "WriteTransferCount: $objItem->{WriteTransferCount}\n"; > print "\n"; > } > }sub WMIDateStringToDate(strDate) > { > return "blah"; > } > Oh you want Python instead??? > > import win32com.client > def WMIDateStringToDate(dtmDate): > strDateTime = "" > if (dtmDateΒ] == 0): > strDateTime = dtmDateΓ] + '/' > else: > strDateTime = dtmDateΒ] + dtmDateΓ] + '/' > if (dtmDateΔ] == 0): > strDateTime = strDateTime + dtmDateΕ] + '/' > else: > strDateTime = strDateTime + dtmDateΔ] + dtmDateΕ] + '/' > strDateTime = strDateTime + dtmDateΎ] + dtmDateΏ] + dtmDateΐ] + > dtmDateΑ] + " " + dtmDateΖ] + dtmDateΗ] + ":" + dtmDate⎖] + dtmDate⎗] > +':' + dtmDate⎘] + dtmDate⎙] > return strDateTime > > strComputer = "." > objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator") > objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2") > colItems = objSWbemServices.ExecQuery("SELECT * FROM Win32_Process") > for objItem in colItems: > if objItem.Caption != None: > print "Caption:" + ` objItem.Caption` > if objItem.CommandLine != None: > print "CommandLine:" + ` objItem.CommandLine` > if objItem.CreationClassName != None: > print "CreationClassName:" + ` objItem.CreationClassName` > if objItem.CreationDate != None: > print "CreationDate:" + WMIDateStringToDate(objItem.CreationDate) > if objItem.CSCreationClassName != None: > print "CSCreationClassName:" + ` objItem.CSCreationClassName` > if objItem.CSName != None: > print "CSName:" + ` objItem.CSName` > if objItem.Description != None: > print "Description:" + ` objItem.Description` > if objItem.ExecutablePath != None: > print "ExecutablePath:" + ` objItem.ExecutablePath` > if objItem.ExecutionState != None: > print "ExecutionState:" + ` objItem.ExecutionState` > if objItem.Handle != None: > print "Handle:" + ` objItem.Handle` > if objItem.HandleCount != None: > print "HandleCount:" + ` objItem.HandleCount` > if objItem.InstallDate != None: > print "InstallDate:" + WMIDateStringToDate(objItem.InstallDate) > if objItem.KernelModeTime != None: > print "KernelModeTime:" + ` objItem.KernelModeTime` > if objItem.MaximumWorkingSetSize != None: > print "MaximumWorkingSetSize:" + ` objItem.MaximumWorkingSetSize` > if objItem.MinimumWorkingSetSize != None: > print "MinimumWorkingSetSize:" + ` objItem.MinimumWorkingSetSize` > if objItem.Name != None: > print "Name:" + ` objItem.Name` > if objItem.OSCreationClassName != None: > print "OSCreationClassName:" + ` objItem.OSCreationClassName` > if objItem.OSName != None: > print "OSName:" + ` objItem.OSName` > if objItem.OtherOperationCount != None: > print "OtherOperationCount:" + ` objItem.OtherOperationCount` > if objItem.OtherTransferCount != None: > print "OtherTransferCount:" + ` objItem.OtherTransferCount` > if objItem.PageFaults != None: > print "PageFaults:" + ` objItem.PageFaults` > if objItem.PageFileUsage != None: > print "PageFileUsage:" + ` objItem.PageFileUsage` > if objItem.ParentProcessId != None: > print "ParentProcessId:" + ` objItem.ParentProcessId` > if objItem.PeakPageFileUsage != None: > print "PeakPageFileUsage:" + ` objItem.PeakPageFileUsage` > if objItem.PeakVirtualSize != None: > print "PeakVirtualSize:" + ` objItem.PeakVirtualSize` > if objItem.PeakWorkingSetSize != None: > print "PeakWorkingSetSize:" + ` objItem.PeakWorkingSetSize` > if objItem.Priority != None: > print "Priority:" + ` objItem.Priority` > if objItem.PrivatePageCount != None: > print "PrivatePageCount:" + ` objItem.PrivatePageCount` > if objItem.ProcessId != None: > print "ProcessId:" + ` objItem.ProcessId` > if objItem.QuotaNonPagedPoolUsage != None: > print "QuotaNonPagedPoolUsage:" + ` > objItem.QuotaNonPagedPoolUsage` > if objItem.QuotaPagedPoolUsage != None: > print "QuotaPagedPoolUsage:" + ` objItem.QuotaPagedPoolUsage` > if objItem.QuotaPeakNonPagedPoolUsage != None: > print "QuotaPeakNonPagedPoolUsage:" + ` > objItem.QuotaPeakNonPagedPoolUsage` > if objItem.QuotaPeakPagedPoolUsage != None: > print "QuotaPeakPagedPoolUsage:" + ` > objItem.QuotaPeakPagedPoolUsage` > if objItem.ReadOperationCount != None: > print "ReadOperationCount:" + ` objItem.ReadOperationCount` > if objItem.ReadTransferCount != None: > print "ReadTransferCount:" + ` objItem.ReadTransferCount` > if objItem.SessionId != None: > print "SessionId:" + ` objItem.SessionId` > if objItem.Status != None: > print "Status:" + ` objItem.Status` > if objItem.TerminationDate != None: > print "TerminationDate:" + > WMIDateStringToDate(objItem.TerminationDate) > if objItem.ThreadCount != None: > print "ThreadCount:" + ` objItem.ThreadCount` > if objItem.UserModeTime != None: > print "UserModeTime:" + ` objItem.UserModeTime` > if objItem.VirtualSize != None: > print "VirtualSize:" + ` objItem.VirtualSize` > if objItem.WindowsVersion != None: > print "WindowsVersion:" + ` objItem.WindowsVersion` > if objItem.WorkingSetSize != None: > print "WorkingSetSize:" + ` objItem.WorkingSetSize` > if objItem.WriteOperationCount != None: > print "WriteOperationCount:" + ` objItem.WriteOperationCount` > if objItem.WriteTransferCount != None: > print "WriteTransferCount:" + ` objItem.WriteTransferCount` > Oh... vbscript, I see > > On Error Resume Next > > Const wbemFlagReturnImmediately = &h10 > Const wbemFlagForwardOnly = &h20 > > arrComputers = Array("SFMXP32") > For Each strComputer In arrComputers > WScript.Echo > WScript.Echo "==========================================" > WScript.Echo "Computer: " & strComputer > WScript.Echo "==========================================" > > Set objWMIService = GetObject("winmgmts:\\" & strComputer & > "\root\CIMV2") > Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", > "WQL", _ > wbemFlagReturnImmediately + > wbemFlagForwardOnly) > > For Each objItem In colItems > WScript.Echo "Caption: " & objItem.Caption > WScript.Echo "CommandLine: " & objItem.CommandLine > WScript.Echo "CreationClassName: " & objItem.CreationClassName > WScript.Echo "CreationDate: " & > WMIDateStringToDate(objItem.CreationDate) > WScript.Echo "CSCreationClassName: " & objItem.CSCreationClassName > WScript.Echo "CSName: " & objItem.CSName > WScript.Echo "Description: " & objItem.Description > WScript.Echo "ExecutablePath: " & objItem.ExecutablePath > WScript.Echo "ExecutionState: " & objItem.ExecutionState > WScript.Echo "Handle: " & objItem.Handle > WScript.Echo "HandleCount: " & objItem.HandleCount > WScript.Echo "InstallDate: " & > WMIDateStringToDate(objItem.InstallDate) > WScript.Echo "KernelModeTime: " & objItem.KernelModeTime > WScript.Echo "MaximumWorkingSetSize: " & > objItem.MaximumWorkingSetSize > WScript.Echo "MinimumWorkingSetSize: " & > objItem.MinimumWorkingSetSize > WScript.Echo "Name: " & objItem.Name > WScript.Echo "OSCreationClassName: " & objItem.OSCreationClassName > WScript.Echo "OSName: " & objItem.OSName > WScript.Echo "OtherOperationCount: " & objItem.OtherOperationCount > WScript.Echo "OtherTransferCount: " & objItem.OtherTransferCount > WScript.Echo "PageFaults: " & objItem.PageFaults > WScript.Echo "PageFileUsage: " & objItem.PageFileUsage > WScript.Echo "ParentProcessId: " & objItem.ParentProcessId > WScript.Echo "PeakPageFileUsage: " & objItem.PeakPageFileUsage > WScript.Echo "PeakVirtualSize: " & objItem.PeakVirtualSize > WScript.Echo "PeakWorkingSetSize: " & objItem.PeakWorkingSetSize > WScript.Echo "Priority: " & objItem.Priority > WScript.Echo "PrivatePageCount: " & objItem.PrivatePageCount > WScript.Echo "ProcessId: " & objItem.ProcessId > WScript.Echo "QuotaNonPagedPoolUsage: " & > objItem.QuotaNonPagedPoolUsage > WScript.Echo "QuotaPagedPoolUsage: " & objItem.QuotaPagedPoolUsage > WScript.Echo "QuotaPeakNonPagedPoolUsage: " & > objItem.QuotaPeakNonPagedPoolUsage > WScript.Echo "QuotaPeakPagedPoolUsage: " & > objItem.QuotaPeakPagedPoolUsage > WScript.Echo "ReadOperationCount: " & objItem.ReadOperationCount > WScript.Echo "ReadTransferCount: " & objItem.ReadTransferCount > WScript.Echo "SessionId: " & objItem.SessionId > WScript.Echo "Status: " & objItem.Status > WScript.Echo "TerminationDate: " & > WMIDateStringToDate(objItem.TerminationDate) > WScript.Echo "ThreadCount: " & objItem.ThreadCount > WScript.Echo "UserModeTime: " & objItem.UserModeTime > WScript.Echo "VirtualSize: " & objItem.VirtualSize > WScript.Echo "WindowsVersion: " & objItem.WindowsVersion > WScript.Echo "WorkingSetSize: " & objItem.WorkingSetSize > WScript.Echo "WriteOperationCount: " & objItem.WriteOperationCount > WScript.Echo "WriteTransferCount: " & objItem.WriteTransferCount > WScript.Echo > Next > Next > > > Function WMIDateStringToDate(dtmDate) > WScript.Echo dtm: > WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _ > Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _ > & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & > Mid(dtmDate,13, 2)) > End Function > > > > > -- > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > > > ------------------------------ > *From:* ActiveDir-owner@mail.activedir.org [ > mailto:ActiveDir-owner@mail.activedir.org<ActiveDir-owner@mail.activedir.org>] > *On Behalf Of *Michael B. Smith > *Sent:* Tuesday, April 29, 2008 1:18 PM > *To:* ActiveDir@mail.activedir.org > *Subject:* RE: [ActiveDir] [OT] BIND as Secondary DNS? > > From one of my upcoming books: > > > > WMI stands for Windows Management Instrumentation. WMI is the Microsoft > implementation of something known as CIM, which stands for Common > Information Model. CIM (and therefore WMI) is an industry-standard way of > representing information about computing objects. These objects include > processors, processes, tasks, networks, IP addresses, routers, switches, > etc. etc. There are literally hundreds of WMI objects implemented within > modern versions of Windows (WMI was first available in Windows 2000 Server). > > WMI provides a schema (that is, a description of the information that is > available) and a specification of the format of the data contained within > the schema. Within WMI, Microsoft has also defined a simple and standard > mechanism for accessing the information contained therein. > > In my opinion, you get a great deal of value from spending time reading > the MSDN documents on (for example) Win32_Process. And if you get there, you > can see all the other Win32_* items. Drill down, and lo and behold, there is > a wealth of data. > > > > Within PowerShell, start with "gwmi win32_process | fl" and go from there… > > > > http://msdn2.microsoft.com/en-us/library/aa394372(VS.85).aspx<http://msdn2.microsoft.com/en-us/library/aa394372%28VS.85%29.aspx> > > > > Regards, > > > > Michael B. Smith > > MCSE/Exchange MVP > > http://TheEssentialExchange.com <http://theessentialexchange.com/> > > > > *From:* ActiveDir-owner@mail.activedir.org [ > mailto:ActiveDir-owner@mail.activedir.org<ActiveDir-owner@mail.activedir.org>] > *On Behalf Of *Susan Bradley, CPA aka Ebitz - SBS Rocks [MVP] > *Sent:* Tuesday, April 29, 2008 1:01 PM > *To:* ActiveDir@mail.activedir.org > *Subject:* Re: [ActiveDir] [OT] BIND as Secondary DNS? > > > > I think it's what you are used to and what makes sense to your platform. > > Up here in the GUI world PowerShell is being used all around me. SBS is > exposing it in the 2k8 era and using it for antispam cmdlets in Exchange > 2k7, move data scripting and it's being used in the backup tasks. IIS 7 > just came out with a PowerShell platform as well. > > You and your blinking c prompt server core world it's understandable :-) > > Forgive the very newb question... in my platform I am looking at > PowerShell but find that the PowerShell scripting tutorials assume a > foundational knowledge of WMI, Common Information Model Standards and what > not. What resource would you gurus say is the best one for better > understanding these foundations? > > > > joe wrote: > > Note that I am not saying no one else should be using PoS or .NET... I am > saying for me, it hasn't made any sense to do so IMO. I actually recommend > some others to use it because it would be the quickest easiest way for them > to spin up. But when people ask me to get involved with it, I don't see the > benefit *to me* to do so and say so. This includes writing wrappers, etc for > it because people seem to think I do certain things better than others. > > > > > > -- > > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > > > > > > ------------------------------ > > *From:* ActiveDir-owner@mail.activedir.org [ > mailto:ActiveDir-owner@mail.activedir.org<ActiveDir-owner@mail.activedir.org>] > *On Behalf Of *joe > *Sent:* Tuesday, April 29, 2008 12:42 PM > *To:* ActiveDir@mail.activedir.org > *Subject:* RE: [ActiveDir] [OT] BIND as Secondary DNS? > > Binary, Unicode, and large int can't be marshalled into text? How do you > know that isn't happening in the backend somewhere currently? Say some XML > stream of some sort? There is and has been a whole object passing model that > has existed for years and years and years called CORBA but the actual > implementation of that is a bit FAT for what we are talking about because it > needed to account for many things we don't care about in the command line > management world. But a similar idea slimmed down to the specific case of > passing data between two command line processes would be nice and it could > be published as a protocol instead of locking into a specific app model. > > > > I think you are happy that the data marshalling is done and you don't have > to deal with it, the fact that it is powershell or .net or anything else > doesn't really play into it. Anything given to you with the same > functionality would have been fine. It is like when people rave about > PowerShell because it lets them manage Exchange at the command line, that > isn't an argument for PowerShell, it is an argument for having anything that > can actually do what you need that didn't exist or possibly didn't know how > to do before. > > > > I like the idea of PowerShell, I think the .NET requirement was extremely > shortsighted considering it isn't what I would consider a first class > citizen of the OS. But I still don't see anything that PoS does for me that > makes me go, my god, I could never accomplish that any other way. Once we > start seeing kernel components written in and being run by .NET pieces > meaning perf has actually been looked at in some serious way, .NET will > start looking more attractive to me. Write now the arguments are mostly of > the variety that people gave for VB years ago and that wasn't enough to get > me to use VB either. Ditto Java. Now when Borland came out with Borland > Builder which gave me VB capability with native good c++ code, I was all > over that. > > > > > > -- > > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > > > > > > ------------------------------ > > *From:* ActiveDir-owner@mail.activedir.org [ > mailto:ActiveDir-owner@mail.activedir.org<ActiveDir-owner@mail.activedir.org>] > *On Behalf Of *Brandon Shell > *Sent:* Tuesday, April 29, 2008 11:05 AM > *To:* ActiveDir@mail.activedir.org > *Subject:* Re: [ActiveDir] [OT] BIND as Secondary DNS? > > What about Binary Data? Unicode? or iADSLargeInteger. The biggest thing > you lose is ability to maintain the integrity of the object/text throughout > the pipe. Using .NET you know if you have FileInfo object it will stay a > FileInfo object until you decide to change it. The problem isn't passing the > text, it is knowing what to do with it on the flip side. The benefit you > have with the object model is Typing. I can TYPE the data so that there is > no ambiguity in the interpretation of the "text." > > > > I don't feel the need to debate the design of Powershell (that is water > under the bridge,) but the validity of the usefulness of dealing with > Objects. Ironically we both agree with the crapiness of the s.ds.d namespace > and ADSI in general, but that is a VERY small scope for Powershell. When it > comes to Dealing with Processes, Files, WMI, and the slew of other things > that Powershell Addresses from an Admin point of view using the .NET > namespace was a good idea. > > > > What Dushyant was talking about was, in Powershell you can have Parameters > that can be passed via the Pipe. These Parameters are determined by Type or > by Name. If it is a STRING it goes here, if it is a DATETIME it goes there, > if it is ... You get the idea. You can NOT achieve that passing just text. > It is just not feasible. Basically, I get your point, The serialization is > still done I just don't have to deal with it. This is the draw. I don't have > to worry about it. Not to mention it is SUPER powerful. > > > > In regards to "defined this standard passing mechanism" They did... its > called .NET Almost all the stuff they needed already had pre-defined .NET > classes that could be used. > > > > I really respect your opinion. You have a lot of experience, but I think > in this case you have been blinded by your hatred for .NET (albeit > understandable hatred.) Could Powershell have been done different... > absolutely. Could it have been done better... absolutely. Should they have > used .NET or just a standard parsing methods... that is converstation for > you and Jeffrey Snover. > > > > btw... Powershell is not a shell. It is an Engine similar to vbscript > parsing engine. They just have a shell that loads Powershell. > > On Tue, Apr 29, 2008 at 9:48 AM, joe <listmail@joeware.net> wrote: > > Give me an example or three of things you can do that you don't think > could be done otherwise that you believe to be a function of passing info > between programs (or if you prefer, call them cmdlets) that you can't do > with passing text. And as we were discussing at the summit, these should not > be things based on two apps not speaking the same language because no one > defined a protocol for the text streaming interchang, but things that > couldn't be done period even if that was defined. As you know and despite > the incorrect assumption/comment made by Dushyant in the PoS session, > Adfind/Mod and ds* can actually communicate with each other in great part > because I allowed it and that isn't all that hard as long as people agree on > a format. But give me an example of something that can't be done with that > object passing that you feel can't be accomplished if the > agreements/protocols aren't established. > > > > I think we would have been better served if MSFT had defined this standard > passing mechanism versus doing what was done. Something that wasn't solely > reliant on .NET. The .NET requirement is a silly requirement IMO. Anyway, > this wouldn't even need a whole new shell to pull off and the foundation > would have built up a lot faster and be far wider and accepted now than it > is. Again, IMO. > > > > joe > > > > > > -- > > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > > > > > > ------------------------------ > > *From:* ActiveDir-owner@mail.activedir.org [mailto: > ActiveDir-owner@mail.activedir.org] *On Behalf Of *Brandon Shell > > *Sent:* Tuesday, April 29, 2008 9:34 AM > > > *To:* ActiveDir@mail.activedir.org > *Subject:* Re: [ActiveDir] [OT] BIND as Secondary DNS? > > > > While I still think it would be cool for you to write them... I have > S.DS.P now... That solves my immediate need so I can do the rest  > > > > It may not be as fast as ADFind, but the flexibility of objects will more > than make up for that time lost with my ability to process the output. > > > > To be clear... I think ADFind and ADMod awesome tools and I am very > grateful for them. > > On Tue, Apr 29, 2008 at 9:08 AM, joe <listmail@joeware.net> wrote: > > Absolutely, I just don't consider that exploring... If I did explore that > area, it would be to work out how to write native code to interface with it. > > > > > If ya want it to so bad... you write it.  > > > > joe > > > > > > -- > > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > > > Those who can.... do. > > Those who can't... beg. > > > > > ------------------------------ > > *From:* ActiveDir-owner@mail.activedir.org [mailto: > ActiveDir-owner@mail.activedir.org] *On Behalf Of *Brandon Shell > *Sent:* Tuesday, April 29, 2008 9:02 AM > > > *To:* ActiveDir@mail.activedir.org > > *Subject:* Re: [ActiveDir] [OT] BIND as Secondary DNS? > > *never stop exploring...*  > > On Tue, Apr 29, 2008 at 8:50 AM, joe <listmail@joeware.net> wrote: > > Very funnyΏ].... > >  > > joe > > > Ώ] But accurate > > > > -- > O'Reilly Active Directory Third Edition - > http://www.joeware.net/win/ad3e.htm > > -----Original Message----- > From: ActiveDir-owner@mail.activedir.org > > [mailto:ActiveDir-owner@mail.activedir.org] On Behalf Of Dean Wells > Sent: Tuesday, April 29, 2008 8:17 AM > To: ActiveDir@mail.activedir.org > Subject: RE: [ActiveDir] [OT] BIND as Secondary DNS? > > Hehe ... and not entirely dissimilar to what happens when people ask joe > .NET/Powershell questions in-person; joe: can you write a wrapper ... joe? > joe? ... where'd he go? > > -- > Dean Wells > MSEtechnology > t Email: dwells@msetechnology.com > http://msetechnology.com > > -----Original Message----- > From: ActiveDir-owner@mail.activedir.org > [mailto:ActiveDir-owner@mail.activedir.org] On Behalf Of Richard Kline > Sent: Monday, April 28, 2008 10:20 AM > To: ActiveDir@mail.activedir.org > Subject: RE: [ActiveDir] [OT] BIND as Secondary DNS? > > First Nomination for Understatement of the Year award: > > -----Original Message----- > From: ActiveDir-owner@mail.activedir.org > [mailto:ActiveDir-owner@mail.activedir.org] On Behalf Of joe > Sent: Sunday, April 27, 2008 4:28 PM > To: ActiveDir@mail.activedir.org > Subject: RE: [ActiveDir] [OT] BIND as Secondary DNS? > > ... > > A DNS server that is dynamically handed its address is NOT the most useful > device you could have on a network...  > > > joe > > > List info : http://www.activedir.org/List.aspx > List FAQ : http://www.activedir.org/ListFAQ.aspx > List archive: http://www.activedir.org/ma/default.aspx > > List info : http://www.activedir.org/List.aspx > List FAQ : http://www.activedir.org/ListFAQ.aspx > List archive: http://www.activedir.org/ma/default.aspx > > List info : http://www.activedir.org/List.aspx > List FAQ : http://www.activedir.org/ListFAQ.aspx > List archive: http://www.activedir.org/ma/default.aspx > > > > > > > > List info : http://www.activedir.org/List.aspx List FAQ : > http://www.activedir.org/ListFAQ.aspx List archive: > http://www.activedir.org/ma/default.aspx > > List info : http://www.activedir.org/List.aspx List FAQ : > http://www.activedir.org/ListFAQ.aspx List archive: > http://www.activedir.org/ma/default.aspx
| | | |
|
|