if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$scriptPath = $MyInvocation.MyCommand.Path
Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" -Verb RunAs
Exit
}
# ユーザーを追加する場合
# New-LocalUser -Name "TempUser" -Password (ConvertTo-SecureString "1234" -AsPlainText -Force) -AccountNeverExpires -PasswordNeverExpires
# Add-LocalGroupMember -Group "Administrators" -Member "TempUser"
# 空パスワードの許可
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name 'LimitBlankPasswordUse' -Value 0
# リモート接続の許可 (sysdm.cpl>リモートが有効になる) + ネットワークレベル認証の解除(PROのみ)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 0
# ファイルとプリンターの共有を有効にする
# netsh advfirewall firewall set rule group="ファイルとプリンターの共有" new enable=Yes
Enable-NetFirewallRule -DisplayGroup "ファイルとプリンターの共有"
# リモートデスクトップを有効にする
# netsh advfirewall firewall set rule group="リモート デスクトップ" new enable=yes
if (Get-NetFirewallRule | Where-Object { $_.DisplayGroup -eq "リモート デスクトップ" })
{
Enable-NetFirewallRule -DisplayGroup "リモート デスクトップ"
}
# 別セグメント許可
# netsh advfirewall firewall add rule name="Allow Subnet RDP" dir=in action=allow protocol=tcp localport=3389 profile=private,public remoteip=192.168.0.0/16
New-NetFirewallRule -DisplayName "Allow Subnet RDP" -Name "Allow Subnet RDP" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -Profile Private,Public -RemoteAddress 192.168.0.0/16
# AC電源使用時のスリープを無効にする
powercfg /change standby-timeout-ac 0
# AC電源使用時のディスプレイオフタイムアウトを無効にする
powercfg /change monitor-timeout-ac 0
# AC電源使用時のハードディスクの電源オフタイムアウトを無効にする
powercfg /change disk-timeout-ac 0
# アクティブなユーザー名(PROのみ)
$activeUser1 = (query user | Select-String "Active" | ForEach-Object {
$_.ToString().Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)[0]
})
$activeUser2 = (Get-WMIObject -ClassName Win32_ComputerSystem).Username
# IPアドレス(192.168.が含まれている)
$ipAddress1 = (Get-NetIPAddress | Where-Object { $_.IPAddress -like "192.168.*" }).IPAddress
# IPアドレス(デフォルトゲートウェイが設定されている)
$ipAddress2 = (Get-NetIPConfiguration | Where-Object { $_.IPv4DefaultGateway -ne $null }).IPv4Address.IPAddress
# wmic useraccount get Caption
$wmic = (Get-WmiObject Win32_UserAccount | Select-Object -ExpandProperty Caption) -join "`r`n"
$whoami = whoami
$computer = Get-WmiObject Win32_ComputerSystem
$domain = $computer.Domain
$workgroup = $computer.Workgroup
$Body = "domain: " + $domain + "`r`n`r`n" + "workgroup: " + $workgroup + "`r`n`r`n" + "active user: " + $activeUser1 + "`r`n`r`n" + "active user: " + $activeUser2 + "`r`n`r`n" + "ip address(192.168.*): " + $ipAddress1 + "`r`n`r`n" + "ip address(default gateway): " + $ipAddress2 + "`r`n`r`n" + "wmic: " + $wmic + "`r`n`r`n" + "whoami: " + $whoami
Write-Output $Body
$encode = [System.Text.Encoding]::UTF8
$SMTPServer = "xxx"
$SMTPPort = "xxx"
$Username = "xxx"
[System.Security.SecureString]$Password = ConvertTo-SecureString "xxx" -AsPlainText -Force
$From = "xxx"
$To = "xxx"
$Subject = "リモート接続情報"
[System.Collections.Hashtable]$SMTPMessage = @{
To = $To
From = $From
Subject = $Subject
Body = $Body
SmtpServer = $SMTPServer
Port = $SMTPPort
Credential = New-Object System.Management.Automation.PSCredential ($Username, $Password)
Encoding = $encode
}
Send-MailMessage @SMTPMessage
Pause