PowerShell 经典脚本贮藏室

由于最近对Powershell越来越喜欢,在空余时间,整理一下一些常用的经典例子分享给大家:

1. 活动目录,列出域信息

# ===========================================
#
 列出域信息
#
===========================================
$strComputer   =   " . "   #  zivsoft-lihua

$colItems   =  get - wmiobject  - class  " Win32_NTDomain "   - namespace  " root\CIMV2 "  `
- computername  $strComputer

foreach  ( $objItem   in   $colItems ) {
      write
- host  " Caption:  "   $objItem .Caption
      write
- host  " Client Site Name:  "   $objItem .ClientSiteName
      write
- host  " Creation Class Name:  "   $objItem .CreationClassName
      write
- host  " DC Site Name:  "   $objItem .DcSiteName
      write
- host  " Description:  "   $objItem .Description
      write
- host  " DNS Forest Name:  "   $objItem .DnsForestName
      write
- host  " Domain Controller Address:  "   $objItem .DomainControllerAddress
      write
- host  " Domain Controller Address Type:  "   $objItem .DomainControllerAddressType
      write
- host  " Domain Controller Name:  "   $objItem .DomainControllerName
      write
- host  " Domain GUID:  "   $objItem .DomainGuid
      write
- host  " Domain Name:  "   $objItem .DomainName
      write
- host  " DS Directory Service Flag:  "   $objItem .DSDirectoryServiceFlag
      write
- host  " DS DNS Controller Flag:  "   $objItem .DSDnsControllerFlag
      write
- host  " DS DNS Domain Flag:  "   $objItem .DSDnsDomainFlag
      write
- host  " DS DNS Forest Flag:  "   $objItem .DSDnsForestFlag
      write
- host  " DS Global Catalog Flag:  "   $objItem .DSGlobalCatalogFlag
      write
- host  " DS Kerberos Distribution Center Flag:  "   $objItem .DSKerberosDistributionCenterFlag
      write
- host  " DS Primary Domain Controller Flag:  "   $objItem .DSPrimaryDomainControllerFlag
      write
- host  " DS Time Service Flag:  "   $objItem .DSTimeServiceFlag
      write
- host  " DS Writable Flag:  "   $objItem .DSWritableFlag
      write
- host  " Installation Date:  "   $objItem .InstallDate
      write
- host  " Name:  "   $objItem .Name
      write
- host  " Name Format:  "   $objItem .NameFormat
      write
- host  " Primary Owner Contact:  "   $objItem .PrimaryOwnerContact
      write
- host  " Primary Owner Name:  "   $objItem .PrimaryOwnerName
      write
- host  " Roles:  "   $objItem .Roles
      write
- host  " Status:  "   $objItem .Status
      write
- host
}

 

2 列出机器安装过的软件列表

# ===================================
#
列出安装列表
#
===================================
$strComputer   =   " ziz-vmm-lihua "   # 可以是局域网远程机器

$colItems   =  get - wmiobject  - class  " Win32_Product "   - namespace  " root\CIMV2 "  `
- computername  $strComputer

foreach  ( $objItem   in   $colItems ) {
      write
- host  " Caption:  "   $objItem .Caption
      write
- host  " Description:  "   $objItem .Description
      write
- host  " Identifying Number:  "   $objItem .IdentifyingNumber
      write
- host  " Installation Date:  "   $objItem .InstallDate
      write
- host  " Installation Date 2:  "   $objItem .InstallDate2
      write
- host  " Installation Location:  "   $objItem .InstallLocation
      write
- host  " Installation State:  "   $objItem .InstallState
      write
- host  " Name:  "   $objItem .Name
      write
- host  " Package Cache:  "   $objItem .PackageCache
      write
- host  " SKU Number:  "   $objItem .SKUNumber
      write
- host  " Vendor:  "   $objItem .Vendor
      write
- host  " Version:  "   $objItem .Version
      write
- host
}

 

3. 列出制定计算机共享文件夹信息

# ===========================================
#
 列出共享文件夹信息
#
===========================================
$strComputer   =   " ziz-vmm-lihua "   # "."

$colItems   =  get - wmiobject  - class  " Win32_Share "   - namespace  " root\CIMV2 "  `
- computername  $strComputer

foreach  ( $objItem   in   $colItems ) {
      write
- host  " Access Mask:  "   $objItem .AccessMask
      write
- host  " Allow Maximum:  "   $objItem .AllowMaximum
      write
- host  " Caption:  "   $objItem .Caption
      write
- host  " Description:  "   $objItem .Description
      write
- host  " Installation Date:  "   $objItem .InstallDate
      write
- host  " Maximum Allowed:  "   $objItem .MaximumAllowed
      write
- host  " Name:  "   $objItem .Name
      write
- host  " Path:  "   $objItem .Path
      write
- host  " Status:  "   $objItem .Status
      write
- host  " Type:  "   $objItem .Type
      write
- host
}

 

4.列出一台机器里所有文件夹信息

$strComputer   =   " . "   # 也可以是远程机器如zivsoft-lihua

$colItems   =  get - wmiobject  - class  " Win32_Directory "   - namespace  " root\CIMV2 "  `
- computername  $strComputer

foreach  ( $objItem   in   $colItems ) {
      write
- host  " Access Mask:  "   $objItem .AccessMask
      write
- host  " Archive:  "   $objItem .Archive
      write
- host  " Caption:  "   $objItem .Caption
      write
- host  " Compressed:  "   $objItem .Compressed
      write
- host  " Compression Method:  "   $objItem .CompressionMethod
      write
- host  " Creation Class Name:  "   $objItem .CreationClassName
      write
- host  " Creation Date:  "   $objItem .CreationDate
      write
- host  " CS Creation Class Name:  "   $objItem .CSCreationClassName
      write
- host  " CS Name:  "   $objItem .CSName
      write
- host  " Description:  "   $objItem .Description
      write
- host  " Drive:  "   $objItem .Drive
      write
- host  " 8.3 File Name:  "   $objItem .EightDotThreeFileName
      write
- host  " Encrypted:  "   $objItem .Encrypted
      write
- host  " Encryption Method:  "   $objItem .EncryptionMethod
      write
- host  " Extension:  "   $objItem .Extension
      write
- host  " File Name:  "   $objItem .FileName
      write
- host  " File Size:  "   $objItem .FileSize
      write
- host  " File Type:  "   $objItem .FileType
      write
- host  " FS Creation Class Name:  "   $objItem .FSCreationClassName
      write
- host  " FS Name:  "   $objItem .FSName
      write
- host  " Hidden:  "   $objItem .Hidden
      write
- host  " InstallationDate:  "   $objItem .InstallDate
      write
- host  " In Use Count:  "   $objItem .InUseCount
      write
- host  " Last Accessed:  "   $objItem .LastAccessed
      write
- host  " Last Modified:  "   $objItem .LastModified
      write
- host  " Name:  "   $objItem .Name
      write
- host  " Path:  "   $objItem .Path
      write
- host  " Readable:  "   $objItem .Readable
      write
- host  " Status:  "   $objItem .Status
      write
- host  " System:  "   $objItem .System
      write
- host  " Writeable:  "   $objItem .Writeable
      write
- host
}

 

5. 列出指定机器中的所有Scheduled Tasks列表

$strComputer   =   " zivosft-lihua-pc "

$colItems   =  get - wmiobject  - class  " Win32_ScheduledJob "   - namespace  " root\CIMV2 "  `
- computername  $strComputer

foreach  ( $objItem   in   $colItems ) {
      write
- host  " Caption:  "   $objItem .Caption
      write
- host  " Command:  "   $objItem .Command
      write
- host  " Days Of Month:  "   $objItem .DaysOfMonth
      write
- host  " Days Of Week:  "   $objItem .DaysOfWeek
      write
- host  " Description:  "   $objItem .Description
      write
- host  " Elapsed Time:  "   $objItem .ElapsedTime
      write
- host  " Installation Date:  "   $objItem .InstallDate
      write
- host  " Interact With Desktop:  "   $objItem .InteractWithDesktop
      write
- host  " Job ID:  "   $objItem .JobId
      write
- host  " Job Status:  "   $objItem .JobStatus
      write
- host  " Name:  "   $objItem .Name
      write
- host  " Notify:  "   $objItem .Notify
      write
- host  " Owner:  "   $objItem .Owner
      write
- host  " Priority:  "   $objItem .Priority
      write
- host  " Run Repeatedly:  "   $objItem .RunRepeatedly
      write
- host  " Start Time:  "   $objItem .StartTime
      write
- host  " Status:  "   $objItem .Status
      write
- host  " Time Submitted:  "   $objItem .TimeSubmitted
      write
- host  " Until Time:  "   $objItem .UntilTime
      write
- host
}

 

6. 一个动态输出自定义cmdlets帮助信息与Examples的函数,帮助你学习陌生的cmdlets

# ======================================================
#
 Usage: Updated by Lihua at 05/05/2009 zivsoft.com
#
 OutputHelp SqlServerCmdletSnapin100 SqlCmdletsFolder
#
 OutputHelp HelloWorldPSSnapin HelloFolder
#
 Output UnknownPSSnapIn UnknownCmdletsFolder
#
======================================================
function  OutputHelp{
    
$snapin = $Args [ 0 # the snapin that you will specified
    
    
# verify parameter
     if ( $snapin   -eq   $null ){
        
throw   " The first parameter Snapin is null "
    }
    
    
$folder = $Args [ 1 # the folder where files will stored
     $snapins   =  Get - PSSnapin  - Name  $snapin
    
if ( $snapins   -eq   $null ){
        
# add pssnapin
        Add - PSSnapin  $snapin
    }    
    
$d   =   Get - Command  - PSSnapin  $snapin
    
# verify the existing snapin has the command-let
     if ( $d   -eq   $null ){
        
throw   " The snapin $snapin has none cmdlets "
    }
    
" Total: "   +   $d .Count
    
$i   =   0
    
    
# Verify the folder exists
     if ([System.IO.Directory] :: Exists([AppDomain] :: CurrentDomain.BaseDirectory.ToString()  +   $folder -eq   $false ){
        md 
$folder
    }
    
    
    
$d   |   foreach   - process {
        
$i ++
        
" Printing "   +   $i
        
$cmdlet   =   $_ .Name
        
$path   =   " .\$folder\ " + $cmdlet   +   " .ps1 "
        Get
- Help  - Examples  $cmdlet   >   $path
    }
    
" Successfully "
}

 

7. 关闭(重启)远程计算机

# =================================
#
在有管理员权限下关闭远程计算机
#
Copyright http://www.zivsoft.com
#
=================================
function  ShutdownRemoteMachine{
    
param  ([string] $machineName = $null )
    
$os   =  Get - WmiObject Win32_OperatingSystem  - computerName  $machineName
    
# shutdown /m \\MACHINENAME /r /f
     $os .Win32Shutdown( 6 , 0 # 远程关机
}

 

文章连接:http://www.cnblogs.com/architect/archive/2009/05/05/1450050.html
作者相关:http://www.zivsoft.com

你可能感兴趣的:(powershell)