随笔 - 24, 文章 - 0, 评论 - 1, 引用 - 0

导航

<2025年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(27)

随笔分类(27)

随笔档案(24)

Powershell

最新随笔

搜索

  •  

积分与排名

  • 积分 - 11265
  • 排名 - 297

最新随笔

最新评论

阅读排行榜

评论排行榜

Powershell Function:Get-SavVer

Function Get-SavVerWmi{ 

trap{
break
}

$computer 
= $args[0
$
namespace = "root\DEFAULT" 
$HKLM 
= 2147483650
$oreg 
= get-wmiobject -list -namespace $namespace -ComputerName $computer | where-object { $_.name -eq "StdRegProv" }
If($Error){$Error.Clear();break}
$strKeyPath 
= "SOFTWARE\Symantec\SharedDefs"
$strValueName 
= "DEFWATCH_10"
$strvalue 
= ($oreg.GetStringValue($HKLM,$strKeyPath,$strValueName)).svalue 

$SavYear 
= $strvalue
$SavYear 
= $SavYear.SubString($SavYear.Length - 12,12)
$SavYear 
= $SavYear.SubString(0,4)
$SavMonth 
= $strvalue
$SavMonth 
= $SavMonth.SubString($SavMonth.Length - 12,12)
$SavMonth 
= $SavMonth.SubString(4,2)
$SavDay 
= $strvalue
$SavDay 
= $SavDay.SubString($SavDay.Length - 12,12)
$SavDay 
= $SavDay.SubString(6,2

$SavRevision 
= $strvalue.SubString($strvalue.Length - 3,3

$SavDate 
= $SavYear + "-" + $SavMonth + "-" + $SavDay 

$DefVer 
= $SavDate + " rev. " + $SavRevision 

$DefVer 

$strKeyPath 
= "SOFTWARE\Intel\DLLUsage\VP6"
$strValueName 
= "C:\Program Files\Symantec AntiVirus\Rtvscan.exe"
$strvalue 
= ($oreg.GetStringValue($HKLM,$strKeyPath,$strValueName)).svalue
$RtvscanVer 
= $strValue
$RtvscanVer 


更新另外一个的版本:

Function Get-SavVerNet{

trap{
break
}

$computer 
= $args[0]
$hkey 
= [Microsoft.Win32.RegistryHive]::LocalMachine 
$key 
= "SOFTWARE\Symantec\SharedDefs"
$value 
= "DEFWATCH_10"
$reg 
= [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hkey, $Computer) 
$regKey 
= $reg.OpenSubKey($key) 
$strvalue 
= $regKey.GetValue($value)

$SavYear 
= $strvalue
$SavYear 
= $SavYear.SubString($SavYear.Length - 12,12)
$SavYear 
= $SavYear.SubString(0,4)
$SavMonth 
= $strvalue
$SavMonth 
= $SavMonth.SubString($SavMonth.Length - 12,12)
$SavMonth 
= $SavMonth.SubString(4,2)
$SavDay 
= $strvalue
$SavDay 
= $SavDay.SubString($SavDay.Length - 12,12)
$SavDay 
= $SavDay.SubString(6,2)

$SavRevision 
= $strvalue.SubString($strvalue.Length - 3,3)

$SavDate 
= $SavYear + "-" + $SavMonth + "-" + $SavDay

$DefVer 
= $SavDate + " rev. " + $SavRevision

$DefVer

$key 
= "SOFTWARE\Intel\DLLUsage\VP6"
$value 
= "C:\Program Files\Symantec AntiVirus\Rtvscan.exe"
$regKey 
= $reg.OpenSubKey($key) 
$strvalue 
= $regKey.GetValue($value)
$RtvscanVer 
= $strValue
$RtvscanVer

}

 

使用方法:Get-SavVerWmi 10.100.1.111

目前脚本并不完善,还需逐步进行修改!

两个版本的速度比较:

PS C:\> measure-command {get-savvernet 10.100.1.1}


Days              : 
0
Hours             : 
0
Minutes           : 
0
Seconds           : 
0
Milliseconds      : 
7
Ticks             : 
79867
TotalDays         : 
9.24386574074074E-08
TotalHours        : 
2.21852777777778E-06
TotalMinutes      : 
0.000133111666666667
TotalSeconds      : 
0.0079867
TotalMilliseconds : 
7.9867

PS C:\> measure-command {get-savverwmi 10.100.1.1}


Days              : 
0
Hours             : 
0
Minutes           : 
0
Seconds           : 
4
Milliseconds      : 
824
Ticks             : 
48240262
TotalDays         : 
5.58336365740741E-05
TotalHours        : 
0.00134000727777778
TotalMinutes      : 
0.0804004366666667
TotalSeconds      : 
4.8240262
TotalMilliseconds : 
4824.0262

诶,以后能不用wmi,就尽量不用了吧:(

posted @ 2009-04-15 16:18 nicktang 阅读(425) | 评论 (0)编辑 收藏

Powershell Tips:捕获错误

 

trap {
  
write-host "Error connecting to $computer" -fore red "$computer" | out-file c:\demo\errors.txt -append 
  continue
}

$computer 
= "localhost"
get-wmiobject win32_operatingsystem -comp $computer -ErrorAction stop

$computer 
= "server2"
get-wmiobject win32_operatingsystem  -comp $computer -ErrorAction stop

$computer 
= "localhost"
get-wmiobject win32_operatingsystem  -comp $computer -ErrorAction stop

posted @ 2009-04-15 13:56 nicktang 阅读(234) | 评论 (0)编辑 收藏

Powershell Tips:避免不必要的输出

3个方法:

1.[void]

2.out-null

3.> $null

 

例如:

PS C:\> $a="hello world!"
PS C:
\> $a
hello world!
PS C:
\> [void]$a
PS C:
\> $a|out-null
PS C:
\> $a > $null

posted @ 2009-04-15 13:20 nicktang 阅读(428) | 评论 (0)编辑 收藏

Powershell using StdRegProv, error 80070005

$cred = Get-Credential test\test
$computer 
= "." 
$
namespace = "root\DEFAULT" 
$HKLM 
= 2147483650
$oreg 
= get-wmiobject -list -namespace $namespace -ComputerName $computer -Credential $cred| where-object { $_.name -eq "StdRegProv" }
$strKeyPath 
= "SOFTWARE\Symantec\SharedDefs"
$strValueName 
= "DEFWATCH_10"
($oreg.GetStringValue($HKLM,$strKeyPath,$strValueName)).svalue

 

使用上面代码连接远程计算机,将收到返回 :

检索成员“GetStringValue”时发生异常:“拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))”
所在位置 行:1 字符: 57
+ ($oreg.GetStringValue($HKLM,$strKeyPath,$strValueName)).s <<<< value

而其他一些class均正常;若不使用凭据,在域环境中运行正常;若不使用凭据,工作组中运行正常(当然本机具有同样密码的相应账户);使用凭据,在本机建立同样密码的相应账户,同样正常。

 

不清楚是powershell对wmi支持不够好,还是某些新的补丁引起 ?目前是怀疑微软某个安全补丁引起,可能会在后续补丁中修复。

posted @ 2009-04-15 10:28 nicktang 阅读(648) | 评论 (0)编辑 收藏

Powershell with Registry

$path = "HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$psv 
= get-itemproperty -path $path 

$psv.RunTimeVersion

$path = "HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$WshShell 
= New-Object -ComObject Wscript.Shell 

$WshShell.RegRead(
"$path\RunTimeVersion")

$computer = “."

$hklm 
= 2147483650 

$key 
= "SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$value 
= "RunTimeVersion" 

$wmi 
= [WMIClass] ("\\" + $computer + "\root\default:StdRegProv")

($wmi.GetStringValue($hklm,$key,$value)).svalue

$computer = “."

$hklm 
= 2147483650 

$oreg 
= get-wmiobject -list -namespace root\default -ComputerName $computer | where-object { $_.name -eq "StdRegProv" }

$key 
= "SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$value 
= "RunTimeVersion" 

($oreg.GetStringValue($hklm,$key,$value)).svalue

$hklm = "HKEY_LOCAL_MACHINE" 

$key 
= "SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$value 
= "RunTimeVersion" 

[Microsoft.Win32.Registry]::GetValue(
"$hklm\$key",$value,$null)

$Computer = “.”

$hkey 
= [Microsoft.Win32.RegistryHive]::LocalMachine 

$key 
= "SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 

$value 
= "RunTimeVersion" 

$reg 
= [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hkey, $Computer) 

$regKey 
= $reg.OpenSubKey($key) 

$regKey.GetValue($value) 

posted @ 2009-04-14 22:07 nicktang 阅读(403) | 评论 (0)编辑 收藏

Reading an Excel sheet using PowerShell and ADO.Net

 

#Lets instantiate the objects we need:
$OleDbConn 
= New-Object "System.Data.OleDb.OleDbConnection"
$OleDbCmd 
= New-Object "System.Data.OleDb.OleDbCommand"
$OleDbAdapter 
= New-Object "System.Data.OleDb.OleDbDataAdapter"
$DataTable 
= New-Object "System.Data.DataTable" 

  

#
Set the connection string and connect. Please pay attention to the syntax, otherwise, you’ll get cryptic errors such as “Could not find installable ISAM”. Also, the file should not be locked exclusively
$OleDbConn.ConnectionString 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\lognoulm\Desktop\servercfg.xls;Extended Properties=""Excel 8.0;HDR=YES"""
$OleDbConn.Open() 

  

#Optionally, 
to check that the connection is open, display the “State” property:
$OleDbConn.State 

  

#Now let’s construct a SQL query. Syntax 
for Excel is a little special, look at the end of this post for external references.
$OleDbCmd.Connection 
= $OleDbConn
$OleDbCmd.CommandText 
= "SELECT * FROM [Sheet1$]" 

  

#
Then set the Adapter object
$OleDbAdapter.SelectCommand 
= $OleDbCmd 

  

#
And then fill the DataTable object with the results
$OleDbAdapter.Fill($DataTable) 

  

#
If everything went fine, the command above will return the number of row present is the DataTable objectTo display the “raw” contents, just enter
$DataTable 

  

#
To show the first line (aka Row), use this $DataTable.Rows[0]
And how to display a given field in that row? Just use the field header. In my XLS, one header is for example “Name”
$DataTable.Rows[
0].Name 

 

摘自:http://www.marc-antho-etc.net/blog/post/Repost-Reading-an-Excel-sheet-using-PowerShell-and-ADONet.aspx

posted @ 2009-04-14 10:38 nicktang 阅读(317) | 评论 (0)编辑 收藏

Using ADO to get data from Excel to Dataset in Monad

 

$excel = "$pwd\桌面\book1.xls" 

# Make the Connection : s
$ConnString 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$excel;Extended Properties=Excel 8.0;" 
$Conn 
= new-object System.Data.OleDb.OleDbConnection($connString) 

# Open the Connection 
$conn.open() 

Get the available Tables 
$Tables 
= $Conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::tables,$null) 

# make a 
Command to get all data of the first table (Sheet) 
$cmd 
= new-object System.Data.OleDb.OleDbCommand("Select * from [$($tables.rows[0].TABLE_NAME)]",$Conn) 

# Load a DataAdapter 
with the Select Command
$da 
= new-object System.Data.OleDb.OleDbDataAdapter($cmd) 

# Fill a DataSet from the Data Adapter 
$ds 
= new-object System.Data.dataset 
$da.fill($ds) 

get the Tables 
$ds.tables | out
-null 

get all Row's where User is Mow1 
$ds.tables[0].select("user = 'Mow1'"

# Save this Dataset 
as XML Document: 
$sw 
= new-object system.io.streamwriter("$pwd\桌面\Puters.xml"
$ds.WriteXml($sw) 
$sw.close() 

# Load XML document into 
new dataset :   
$sr 
=  new-object system.io.streamreader("$pwd\桌面\Puters.xml"
$ds.ReadXml($sr)
$sr.close() 

$ds.tables 

 

摘自:mow001的blog

posted @ 2009-04-14 10:32 nicktang 阅读(141) | 评论 (0)编辑 收藏

Powershell with Database

通过ADO查询Access

$adOpenStatic = 3
$adLockOptimistic 
= 3 

$objConnection 
= New-Object -comobject ADODB.Connection
$objRecordset 
= New-Object -comobject ADODB.Recordset 

$objConnection.Open(
"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = $pwd\checksav.mdb")
$strQuery
="Select * from CheckSAV"
$objRecordset.Open($strQuery, $objConnection,$adOpenStatic,$adLockOptimistic) 

#$objRecordSet
=$objConnection.Execute($strQuery) 

$objRecordset.MoveFirst() 

do {$objRecordset.Fields.Item("ComputerName").Value; $objRecordset.MoveNext()} until 
    ($objRecordset.EOF 
-eq $True) 

$objRecordset.Close()
$objConnection.Close() 

 

通过ADO更新Access

$adOpenStatic = 3
$adLockOptimistic 
= 3 

$objConnection 
= New-Object -com "ADODB.Connection"
$objRecordSet 
= New-Object -com "ADODB.Recordset" 

$objConnection.Open(
"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = $pwd\checksav.mdb"
$strQuery
="Select * from CheckSAV"
$objRecordset.Open($strQuery, $objConnection,$adOpenStatic,$adLockOptimistic) 

$objRecordSet.AddNew()
$objRecordSet.Fields.Item(
"ComputerName").Value = "atl-ws-001"
$objRecordSet.Update() 

$objRecordSet.Close()
$objConnection.Close() 

 
通过ADO删除Access

$objConnection = New-Object -com "ADODB.Connection"
$objRecordSet 
= New-Object -com "ADODB.Recordset" 

$objConnection.Open(
"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = $pwd\checksav.mdb"
$strQuery
="delete from checksav where computername='atl-ws-001'"
$objRecordSet
=$objConnection.Execute($strQuery) 

$objConnection.Close() 

 

通过ADO查询Excel

$objConnection= New-Object -com "ADODB.Connection" 
$file
="c:\ATT1741595.xls" 
$strQuery
="Select * from [Sheet1$]" 
$users
=@() 
$objConnection.Open(
"Provider=Microsoft.Jet.OLEDB.4.0;` 
Data Source=$file;Extended Properties=Excel 8.0;"
$objRecordSet=$objConnection.Execute($strQuery) 
do { 
$users
+=$objRecordSet.Fields.Item(9).Value 
$objRecordSet.MoveNext() 
Until ($objRecordSet.EOF) 
$objConnection.Close() 

 

查询SqlServer

$conn = new-object system.data.oledb.oledbconnection
$connstring 
= "provider=sqloledb;data source=corp-alt-66;initial catalog=tracer2_dev_dfm;integrated security=SSPI"
$conn.connectionstring 
= $connstring
$conn.open() 

  

$sqlquery 
= "select ServerId, ServerName from Servers"
$cmd 
= New-Object system.data.oledb.oledbcommand
$cmd.connection 
= $conn
$cmd.commandtext 
= $sqlquery
$reader 
= $cmd.executereader()#将 CommandText 发送到 Connection 并生成一个 OleDbDataReader。OleDbCommand.ExecuteScalar 方法,执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行。
while($reader.read())
  {
    $servId 
= $reader.getvalue(0)
    $computer 
= $reader.getvalue(1)
  } 

$reader.close()
$conn.close() 

 

更新Sqlserver

$conn = new-object System.Data.SqlClient.SqlConnection
$connstring 
= "provider=sqloledb;data source=corp-alt-66;initial catalog=tracer2_dev_dfm;integrated security=SSPI"
$conn.connectionstring 
= $connstring
$conn.open()


$query 
= "Insert into TestTable (ServerId, OSVersion) values ('$servId','$version')"
$cmd 
= New-Object system.data.oledb.oledbcommand
$cmd.connection 
= $conn
$cmd.commandtext 
= $query
$cmd.executenonquery()#针对 Connection 执行 SQL 语句并返回受影响的行数。
$conn.close()

 

$conn = new-object System.Data.SqlClient.SqlConnection 

$conn.ConnectionString 
= "server=localhost;database=Northwind;integrated security=SSPI" 

$cmd 
= new-object System.Data.SqlClient.SqlCommand 

$cmd.CommandText 
= "SELECT CategoryID, CategoryName, Description,Picture FROm Categories" 

$cmd.Connection 
= $conn 

$adapter 
= new-object System.Data.SqlClient.SqlDataAdapter 

$adapter.SelectCommand 
= $cmd 

$ds 
= new-object System.Data.DataSet 

$adapter.Fill($ds) 

$conn.close() 

$ds.Tables[
0

 

  1. ##############################################################################
  2. ##
  3. ## Invoke-SqlCommand.ps1
  4. ##
  5. ## From Windows PowerShell Cookbook (O'Reilly)
  6. ## by Lee Holmes (http://www.leeholmes.com/guide)
  7. ##
  8. ## Return the results of a SQL query or operation
  9. ##
  10. ## ie:
  11. ##
  12. ##    ## Use Windows authentication
  13. ##    Invoke-SqlCommand.ps1 -Sql "SELECT TOP 10 * FROM Orders"
  14. ##
  15. ##    ## Use SQL Authentication
  16. ##    $cred = Get-Credential
  17. ##    Invoke-SqlCommand.ps1 -Sql "SELECT TOP 10 * FROM Orders" -Cred $cred
  18. ##
  19. ##    ## Perform an update
  20. ##    $server = "MYSERVER"
  21. ##    $database = "Master"
  22. ##    $sql = "UPDATE Orders SET EmployeeID = 6 WHERE OrderID = 10248"
  23. ##    Invoke-SqlCommand $server $database $sql
  24. ##
  25. ##    $sql = "EXEC SalesByCategory 'Beverages'"
  26. ##    Invoke-SqlCommand -Sql $sql
  27. ##
  28. ##    ## Access an access database
  29. ##    Invoke-SqlCommand (Resolve-Path access_test.mdb) -Sql "SELECT * FROM Users"
  30. ##   
  31. ##    ## Access an excel file
  32. ##    Invoke-SqlCommand (Resolve-Path xls_test.xls) -Sql 'SELECT * FROM [Sheet1$]'
  33. ##
  34. ##############################################################################
  35. param(
  36.     [string] $dataSource = ".\SQLEXPRESS",
  37.     [string] $database = "Northwind",      
  38.     [string] $sqlCommand = $(throw "Please specify a query."),
  39.     [System.Management.Automation.PsCredential] $credential
  40.   )
  41. ## Prepare the authentication information. By default, we pick
  42. ## Windows authentication
  43. $authentication = "Integrated Security=SSPI;"
  44. ## If the user supplies a credential, then they want SQL
  45. ## authentication
  46. if($credential)
  47. {
  48.     $plainCred = $credential.GetNetworkCredential()
  49.     $authentication =
  50.         ("uid={0};pwd={1};" -f $plainCred.Username,$plainCred.Password)
  51. }
  52. ## Prepare the connection string out of the information they
  53. ## provide
  54. $connectionString = "Provider=sqloledb; " +
  55.                     "Data Source=$dataSource; " +
  56.                     "Initial Catalog=$database; " +
  57.                     "$authentication; "
  58. ## If they specify an Access database or Excel file as the connection
  59. ## source, modify the connection string to connect to that data source
  60. if($dataSource -match '\.xls$|\.mdb$')
  61. {
  62.     $connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$dataSource; "
  63.     if($dataSource -match '\.xls$')
  64.     {
  65.         $connectionString += 'Extended Properties="Excel 8.0;"; '
  66.         ## Generate an error if they didn't specify the sheet name properly
  67.         if($sqlCommand -notmatch '\[.+\$\]')
  68.         {
  69.             $error = 'Sheet names should be surrounded by square brackets, and ' +
  70.                        'have a dollar sign at the end: [Sheet1$]'
  71.             Write-Error $error
  72.             return
  73.         }
  74.     }
  75. }
  76. ## Connect to the data source and open it
  77. $connection = New-Object System.Data.OleDb.OleDbConnection $connectionString
  78. $command = New-Object System.Data.OleDb.OleDbCommand $sqlCommand,$connection
  79. $connection.Open()
  80. ## Fetch the results, and close the connection
  81. $adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command
  82. $dataset = New-Object System.Data.DataSet
  83. [void] $adapter.Fill($dataSet)
  84. $connection.Close()
  85. ## Return all of the rows from their query
  86. $dataSet.Tables | Select-Object -Expand Rows

posted @ 2009-04-13 14:13 nicktang 阅读(814) | 评论 (0)编辑 收藏

Win32_PingStatus vs [System.Net.NetworkInformation.Ping] vs Ping.exe

 

$g = @("127.0.0.1")*50

 

Function Ping-Wmi {

PROCESS { 

$wmi 
= get-wmiobject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$_'"

if ($wmi.StatusCode -eq 0) { $_ }

}

}

 

Function Ping-Net {

Begin { $ping 
= new-object System.Net.NetworkInformation.Ping }

Process {

if ($ping.Send($_)) {

$_

}

}

}

 

Function Ping-Exe {

Process {

        
if ((Ping -1 $_|out-string) –match “Reply”) {

            $_

        }

    }

}

 

PS C:
\> measure-command { $g | Ping-Wmi } 

Days              : 
0
Hours             : 
0
Minutes           : 
0
Seconds           : 
0
Milliseconds      : 
802
Ticks             : 
8023905
TotalDays         : 
9.28692708333333E-06
TotalHours        : 
0.00022288625
TotalMinutes      : 
0.013373175
TotalSeconds      : 
0.8023905
TotalMilliseconds : 
802.3905 

  

PS C:
\> measure-command { $g | Ping-Net } 

Days              : 
0
Hours             : 
0
Minutes           : 
0
Seconds           : 
0
Milliseconds      : 
25
Ticks             : 
255965
TotalDays         : 
2.96255787037037E-07
TotalHours        : 
7.11013888888889E-06
TotalMinutes      : 
0.000426608333333333
TotalSeconds      : 
0.0255965
TotalMilliseconds : 
25.5965 

  

PS C:
\> measure-command { $g | Ping-Exe } 

Days              : 
0
Hours             : 
0
Minutes           : 
0
Seconds           : 
2
Milliseconds      : 
375
Ticks             : 
23757357
TotalDays         : 
2.74969409722222E-05
TotalHours        : 
0.000659926583333333
TotalMinutes      : 
0.039595595
TotalSeconds      : 
2.3757357
TotalMilliseconds : 
2375.7357 

 

从这个结果来看,Ping-Exe=2375.7357 > Ping-Wmi=802.3905 > Ping-Net=25.5965,该选择哪个就不用说了:)

posted @ 2009-04-10 22:38 nicktang 阅读(295) | 评论 (0)编辑 收藏

Ping Function

Function Ping-Net
{
  $timeout
=1000;#毫秒
  trap { continue; }
  $ping 
= new-object System.Net.NetworkInformation.Ping 
  $reply 
= new-object System.Net.NetworkInformation.PingReply 

  $reply 
= $ping.Send($args, $timeout);
  
if( $reply.Status -eq "Success"  ) 
  {
     
return $true;
  }
  
return $false



function Ping-Wmi {
   Param([
string]$computer)
   $pingresult 
= Get-WmiObject win32_pingstatus -"address='$computer'"
   #$pingresult 
= gwmi -query "SELECT * FROM Win32_PingStatus WHERE Address = '$computer'"
   
if($pingresult.statuscode -eq 0) {$trueelse {$false}
}

Function Ping-Exe{
    $reply 
= Ping -1 -1000 $args;
    
Return $?;
}

Function Ping-Exe{
    (Ping 
-1 -1000 $args|out-string) –match “Reply”;

}

posted @ 2009-04-10 13:59 nicktang 阅读(247) | 评论 (0)编辑 收藏

仅列出标题
共3页: 1 2 3