3つの管理スクリプト

公共を復活させる必要があるので、管理スクリプトはほとんどありません。



1.ネットワーク設定とドメインコンピューターの構成を取得する

2.ドメインコンピューターのデフォルトゲートウェイを変更する

3.メールボックスの統計を取得する



1.ドメインコンピューターのネットワーク設定と構成を取得します。



ドメインコンピューターをバイパスし、それらから情報を収集します。 出力には、本格的なオブジェクトがスローされます。 もちろん、コンピューターの電源を入れる必要があります。 スクリプトには、WMIを介した作業の例が含まれています。 ドメインから実行します。



#     $cred = Get-Credential <anchor>habracut</anchor> $Clients = Get-ADComputer -Filter * | Sort-Object name | Select-Object name $CompData = @() foreach ($cli in $Clients) { if (( Test-Connection $cli.Name -Count 2 -Quiet ) -eq 'True') { if ($cli.name -ne $env:COMPUTERNAME) { #   WMI $os = Get-WmiObject -ComputerName $cli.name Win32_OperatingSystem -Credential $cred $net = Get-WmiObject -Class Win32_NetWorkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName $cli.name -Credential $cred $nic = Get-WmiObject -Class Win32_NetWorkAdapter -ComputerName $cli.name -Credential $cred | where {$_.adaptertype -eq 'Ethernet 802.3'} | where { $_.NetEnabled -eq 'True'} $disk = Get-WmiObject -Class Win32_DiskDrive -ComputerName $cli.name -Credential $cred $props = [ordered]@{ Name=$os.CSName OSName=$os.Caption OSSN=$os.SerialNumber OSVersion=$os.Version OSSystemDirectory=$os.SystemDirectory OSBuild=$os.BuildNumber OSMUI=$os.MUILanguages OSBootDevice=$os.BootDevice NICNetConnectionID=$nic.NetConnectionID NICName=$nic.Name NICDeviceID=$nic.DeviceID NICAdapterType=$nic.AdapterType NICIndex=$nic.Index NICInterfaceIndex=$nic.InterfaceIndex NICMAC=$nic.MACAddress NICManufacturer=$nic.Manufacturer NICNetEnabled=$nic.NetEnabled NICPhysical=$nic.PhysicalAdapter NICProductName=$nic.ProductName NICServiceName=$nic.ServiceName NICSpeed=$nic.Speed NetDHCPEnabled=$net.DHCPEnabled NetIPAddress=$net.IPAddress NetDefaultGateway=$net.DefaultIPGateway DiskName=$disk.Caption DiskStatus=$disk.Status DiskDeviceId=$disk.deviceid DiskSerialNumber=$disk.serialnumber DiskSize=$disk.size } $obj = New-Object -TypeName PSObject -Property $props $CompData += $obj } } } $CompData
      
      





2.デフォルトゲートウェイを変更する



以前のスクリプトを変更して、デフォルトゲートウェイを変更します。 (ライブシステムで実行する前に、必ず環境のすべてを確認してください!)WMI呼び出しを使用してゲートウェイを変更します。 Provershellを使用して、アダプターを削除して再作成する必要があります。これにより、コンピューターとの接続が失われます。 Powershell 4および3でテストし、2012年と8年に勝ちます。



 $cred = Get-Credential $OldGateway = '192.168.30.1' $NewGateway = '192.168.30.50' $Clients = Get-ADComputer -Filter * | Sort-Object name | Select-Object name $CompData = @() foreach ($cli in $Clients) { if (( Test-Connection $cli.Name -Count 2 -Quiet ) -eq 'True') { if ($cli.name -ne $env:COMPUTERNAME) { $os = Get-WmiObject -ComputerName $cli.name Win32_OperatingSystem -Credential $cred $net = Get-WmiObject -Class Win32_NetWorkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName $cli.name -Credential $cred $nic = Get-WmiObject -Class Win32_NetWorkAdapter -ComputerName $cli.name -Credential $cred | where {$_.adaptertype -eq 'Ethernet 802.3'} | where { $_.NetEnabled -eq 'True'} $disk = Get-WmiObject -Class Win32_DiskDrive -ComputerName $cli.name -Credential $cred $props = [ordered]@{ Name=$os.CSName OSName=$os.Caption OSSN=$os.SerialNumber OSVersion=$os.Version OSSystemDirectory=$os.SystemDirectory OSBuild=$os.BuildNumber OSMUI=$os.MUILanguages OSBootDevice=$os.BootDevice NICNetConnectionID=$nic.NetConnectionID NICName=$nic.Name NICDeviceID=$nic.DeviceID NICAdapterType=$nic.AdapterType NICIndex=$nic.Index NICInterfaceIndex=$nic.InterfaceIndex NICMAC=$nic.MACAddress NICManufacturer=$nic.Manufacturer NICNetEnabled=$nic.NetEnabled NICPhysical=$nic.PhysicalAdapter NICProductName=$nic.ProductName NICServiceName=$nic.ServiceName NICSpeed=$nic.Speed NetDHCPEnabled=$net.DHCPEnabled NetIPAddress=$net.IPAddress NetDefaultGateway=$net.DefaultIPGateway DiskName=$disk.Caption DiskStatus=$disk.Status DiskDeviceId=$disk.deviceid DiskSerialNumber=$disk.serialnumber DiskSize=$disk.size } $obj = New-Object -TypeName PSObject -Property $props $CompData += $obj } } } #$CompData ################################################################ #   foreach($Co in $CompData) { if ($Co.NetDefaultGateway = $OldGateway) { $Co.Name $Co.netdefaultgateway $NWCards = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $co.Name -Credential $cred | where{ $_.ipenabled -eq $true } foreach ($nwc in $NWCards) { $gateway = $nwc.defaultipgateway if ($gateway -eq $OldGateway) { $nwc.setgateways($NewGateway) } } } }
      
      





3.メールボックスの統計を取得する



サイズ別の上位メールボックス、文字数別の上位メールボックス、削除済みアイテム別の上位メールボックス(バスケット2のパージはまだ発生していないため、ユーザーのメールのみが削除されます)の統計を収集し、HTMLで「美しい」レポートを生成してメールに送信し、フォルダーに配置します。 タスクタスクマネージャーにインストールされる月次ベースステータスレポーターとして使用されます。 Exchangeサーバーで実行します。 Exchange 2010でテストされました。



 <#     25        #> Param ( [int]$TopCount = 25, [boolean]$SaveReport = $false, [string]$ReportPath = 'C:\Reports\MailboxReport.html', [boolean]$SendReport = $true, [string]$ReportMail1 = 'admin@mail.local' ) # check snapin present $EX2010 = $false $snaps = Get-PSSnapin foreach( $snap in $snaps ) { if ($snap.Name -eq 'Microsoft.Exchange.Management.PowerShell.E2010') { $EX2010 = $true } } if ($EX2010 -eq $false) { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 } $boxes = Get-Mailbox | Get-MailboxStatistics | sort TotalItemSize -Descending $TotalSize = $boxes | sort TotalItemSize -Descending | select -First $TopCount #    $Size = @() foreach ($box in $TotalSize) { $propsTotalSize = [ordered]@{ DisplayName=$box.DisplayName User=$box.LastLoggedOnUserAccount Database=$box.Database TotalSize=$box.TotalItemSize ItemCount=$box.ItemCount DeletedItemCount=$box.DeletedItemCount TotalDeletedSize=$box.TotalDeletedItemSize } $obj = New-Object -TypeName PSObject -Property $propsTotalSize $Size += $obj } #    purge $Deleted = $boxes | sort TotalDeletedItemSize -Descending | select -First $TopCount $Del = @() foreach ($box in $Deleted) { $propsDeleted = [ordered]@{ DisplayName=$box.DisplayName User=$box.LastLoggedOnUserAccount Database=$box.Database TotalSize=$box.TotalItemSize ItemCount=$box.ItemCount DeletedItemCount=$box.DeletedItemCount TotalDeletedSize=$box.TotalDeletedItemSize } $obj = New-Object -TypeName PSObject -Property $propsDeleted $Del += $obj } #    ,               $Top = $boxes | sort ItemCount -Descending | select -First $TopCount $TopItems = @() foreach ($box in $Top) { $propsTopItems = [ordered]@{ DisplayName=$box.DisplayName User=$box.LastLoggedOnUserAccount Database=$box.Database TotalSize=$box.TotalItemSize ItemCount=$box.ItemCount DeletedItemCount=$box.DeletedItemCount TotalDeletedSize=$box.TotalDeletedItemSize } $obj = New-Object -TypeName PSObject -Property $propsTopItems $TopItems += $obj } ##### HTML generating Write-Verbose 'HTML fragment producing' $fragTopItems = $TopItems | ConvertTo-Html -As table -Fragment -PreContent '<h2>     (items count)</h2>' | Out-String $fragTopSizes = $Size | ConvertTo-Html -As table -Fragment -PreContent '<h2>   </h2>' | Out-String $fragTopDelItems = $Del | ConvertTo-Html -As table -Fragment -PreContent '<h2>     (purge   )</h2>' | Out-String Write-Verbose 'definiting CSS' $head = @' <style> body { background-color:#ffffff; font-family:Tahoma; font-size:12pt; } td, th { border:1px solid black; border-collapse:collapse; } th { color:white; background-color:black; } table, tr, td, th { padding: 2px; margin: 0px } table { font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; font-size: 14px; border-radius: 10px; border-spacing: 0; text-align: center; } th { background: #BCEBDD; color: white; text-shadow: 0 1px 1px #2D2020; padding: 10px 20px; } th, td { border-style: solid; border-width: 0 1px 1px 0; border-color: white; } th:first-child, td:first-child { text-align: left; } th:first-child { border-top-left-radius: 10px; } th:last-child { border-top-right-radius: 10px; border-right: none; } td { padding: 10px 20px; background: #F8E391; } tr:last-child td:first-child { border-radius: 0 0 0 10px; } tr:last-child td:last-child { border-radius: 0 0 10px 0; } tr td:last-child { border-right: none; } </style> '@ Write-Verbose 'HTML producing' $Date = Get-Date if ($SaveReport = $true) { $rep = ConvertTo-HTML -head $head -PostContent $fragTopSizes, $fragTopDelItems, $fragTopItems -PreContent "<h1>    $Date</h1>" | Out-String $rep | Out-File $ReportPath } # Sending Email to admins if ($SendReport = $true) { $encoding = [System.Text.Encoding]::UTF8 $body = ConvertTo-HTML -head $head -PostContent $fragTopSizes, $fragTopDelItems, $fragTopItems -PreContent "<h1>    $Date</h1>" | Out-String Write-Verbose "Sending e-mail" $params = @{'To'=$ReportMail1 'From'='bot@geomex.local' 'Subject'="Mailbox report $Date" 'Body'=$Body 'BodyAsHTML'=$True 'SMTPServer'='mail.domain.local'} Send-MailMessage @params -Encoding $encoding }
      
      





5月の祝日ですべて。



All Articles