https://github.com/green-fox-academy/safely-syllabus/tree/master/materialreview/scripts/powershell

https://github.com/green-fox-academy/safely-syllabus/tree/master/materialreview/powershell-commands

#### MatRev ####

辽宁省

# 这是个单行注释



#Strings
$aString = "阿尔玛"
[string]$bstring = "Korte"

$aInt = 10
[int]$bint = 5

$aInt = $bInt
$aInt += $bInt
$aInt++
$aInt
$aInt = 10
#Airborne数值
$aFloat = 1.5
[float]$bFloat = 1.5

#$bFloat = $aFloat * $aInt
$bFloat = $bFloat * $aInt

$bFloat

#Blocks

$aArray= (1, 2, 3, 4, 5)
$bArray= (1..5)

$Global:aString = "全局字符串字符串,用于整个脚本,有定义的ast"

ǞǞǞ

param(
    [string]$Parameter1, # Parameter1是为.....。
    [string]$Parameter2 # Parameter1是为.....。
)
[string]$Global:Parameter1=$Parameter1
$Global:Parameter2=$Parameter2

Set-StrictMode -Version 2.0 #warning
###############################################################################################
#function [string] aRutin([int]$iInt){
函数aRutin([int]$iInt){
    
    返回 "S"
}
###############################################################################################
函数 bRutin($iInt){
    返回 "S"
}
###############################################################################################
#function [void] cRutin(){
函数 cRutin(){
    返回 "S"
}

函数Ellenorzes(){
    if(($Global:Parameter1 -eq $null) -or ($Global:Parameter1 -eq "")
    {
        Write-Host "Parameter1 ures!" -ForegroundColor Red
    }
    否则
    {
        Write-Host $Global:Parameter1 -ForegroundColor Cyan
    }

    if(($Global:Parameter2 -ne $null) -and ($Global:Parameter2 -ne "")
    {
        Write-Host $Global:Parameter2 -ForegroundColor Red
    }
    否则
    {
        Write-Host "Parameter2 ures!" -ForegroundColor Cyan
    }
}


函数 bRutin2($iInt){
    for ($i = 1;$i -le $iInt;$i++)
    {
        写下$i.ToString()
    }
    $i=1
    while ($i -le $iInt)
    {
        写道:"$i.ToString()
        $i++
    }
    $i = 1
    做
    {
        写下 $i.ToString()
        $i++
    }
    while ($i -le $iInt)
    
    返回 $i

}
###############################################################################################
#####
####
##主要
####
####
###############################################################################################

CLS

# $cString = aRutin -iInt 10
[string]$aString = aRutin -iInt 5
$aString

Write-Host $Global:Parameter1 -ForegroundColor Cyan

反义词

bRutin2 -iInt 5

内置变量

#Get-Help 编写-Host
#Get-ChildItem | Get-Member

获取日期 -格式为 "yyyy-MM-dd"
Get-Date -Format "yyyy-MM-dd HH:mm:ss.ms"

$b =$env:COMPUTERNAME
$b

$files=Get-ChildItem -Path "C:\Users\MSI\AppData\Local\Temp" -Filter "*.tmp"
#$files | Select-Object -Property * | Select-Object -Last 5 | Select-Object -Property FullName, Length | Sort-Object Length -Descending
$files | Select-Object -Property * | Select-Object -First 5

$Files5biggest = $files | Sort-Object Length -Descending | Select-Object -First 5 | Sort-Object Name | Select-Object -Property FullName, Length
$Files5biggest | Format-Table -AutoSize

Get-Process | Select-Object -Property * | Select-Object -First 1

$ProcList = Get-Process
$SumPagedMemorySize = 0
foreach ($aProc in $ProcList)
{
    
    $SumPagedMemorySize += $aProc.PagedMemorySize

}
写下$SPagedMemorySize的地址

文件管理

$Lines = Get-Content -Path "C:\Users\MSI\Documents\suli\mat review\batch\DeleteOldFiles.log"
$Lines.Length
$LogLines = ""
foreach($aLine in $Lines)
{
    如果($aLine.Contains(".tmp"))
    {
        写下$aLine的地址
        $LogLines+=$aLine
        $LogLines+="`n"
    }
}

$LogLines | Out-File -FilePath "C:\Users\MSI\Documents\suli\mat reviewPowerShell\LogDeleteOldFiles.log"
$LogLines.Length

Copy-Item -Force "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles.log" "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"
Remove-Item -Force -Path "C:\Users\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"
#Remove-Item -Force -Path "C:\Users\Documents\suli\mat review\PowerShell___LogDeleteOldFiles2.log" -Filter "*.log"

#Move-Item -Force "C:\UsersMSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles.log" "C:\UsersMSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"


试试
{
    $Lines = Get-Content -Path "C:\Users\MSI\Documents\sulimat review\batch\DeleteOldFiles.log"
}
捕获
{
    Write-Host "No such file" -ForegroundColor Red
}
最后
{
    Write-Host "重新启动!" -ForegroundColor Cyan
}

上市文件

$SourceFolder = "C:\Users\MSI\Documents\sulimat review\PowerShell"

$PDFfiles = Get-ChildItem -Path $SourceFolder -Filter "*.log"

#$PDFfiles | Select-Object -Property * -First 1

$PDFfiles5 = $PDFfiles | 排序-对象 LastWriteTime | 选择-对象 -最后 5

$PDFfiles5s = $PDFfiles5 | 选择-对象 -属性目录,名称,长度,最后写入时间,最后访问时间
Sort-Object -Property Name

$RiportFileName = $SourceFolder + "\PDFriport.csv" 。
$RiportFileName

$PDFfiles5s | Export-Csv -Path $RiportFileName -Delimiter ';' 。

进程的总内存,进程的数量

CLS

$Process = Get-Process
$SumMem = 0
$Count = 0
foreach ($aProcess in $Process)
{
    $SumMem += $Process.PagedMemorySize
    $Count++
}
Write-Host "Number of processes:" $Count 

##### WINDOWS管理项目任务 ####T

创建广告用户

$SamAccountName = "hende"
$Name = "彼得-亨德"
$Firstname = "彼得"
$Surname = "亨德"
$Description = "Leendo系统管理员"
$C城市 = "布达佩斯"
$StreetAddress = "Nyílvessző utca 30."
$C公司 = "HendeWEB"
$PasswordNeverExpires = "是的"
$AccountPassword = "Password1"
$AccountExpirationDate ="2050.05.05"
1TP3组织 = "HendeWEB"
$Path = "IT"
$Path = "ou="+ $Path + ",dc=phende,dc=comp, dc=local"
如果($PasswordNeverExpires = "yes")
{
    $PasswordNeverExpires = $true
}else
{
    $PasswordNeverExpires = $false
}


New-ADUser -SamAccountName $SamAccountName -Name $Name -GivenName $FirstName -Surname $Surname -Description $Description -City $City -StreetAddress $StreetAddress -Company $Company -What?组织机构 $Organization -密码永不过期 $PasswordNeverExpires -账户密码 (ConvertTo-SecureString "$AccountPassword" -AsPlainText -Force) -账户过期日期 $AccountExpirationDate -路径 $Path

CREATE GPO, GPO LINK (GPO注册表)

$Name="TestGPO"
$OU= "ou=IT,dc=phende,dc=comp,dc=local"

#$keyb = 'HKEY_CURRENT_USER\Software\Microsoft/Windows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNameb = 'NoChangingWallPaper'。

New-GPO -name $Name
#Set-GPRegistryValue -Key $keyb -ValueName $ValueNamec -Type DWORD -Value 1 ````。
New-GPLink -Target $OU

1) 在SQL过程中创建的S驱动器上,创建一个虚拟机文件夹--我们稍后会做这件事
使用

##### WINDOWS管理项目任务 ####T

2) 安装一个AD,其域名应遵循以下命名规则:
名字的第一个字母+主名+comp.local 也就是说,如果你的名字是:Jakab Gipsz,那么域名就是
名称: jgipsz.comp.local

Set-ExecutionPolicy Unrestricted -Force

Add-WindowsFeature AD-Domain-Services -IncludeManagementTools
$SecurePassword = convertto-securestring "sxCTo768" -asplaintext -force

导入模块ADDSDeployment
安装-ADDSForest -SafeModeAdministratorPassword $SecurePassword `。
-CreateDnsDelegation:$false `。
-DatabasePath "C:Windows\NTDS" `.
-DomainMode "WinThreshold" `。
-DomainName "phende.comp.local" `
-DomainNetbiosName "PHENDE" ` `
-ForestMode "WinThreshold" `
-InstallDns:$true `
-LogPath "C:Windows\NTDS" `
-NoRebootOnCompletion:$false `。
-SysvolPath "C:Windows\SYSVOL" `.
-Force:$true

3)DNS AD应被整合


4) 创建一个IT OU,然后在其中增加两个:COMP和USR
a) 关闭对COMP OU的继承权

New-ADOrganizationalUnit IT
New-ADOrganizationalUnit USR -Path "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
New-ADOrganizationalUnit COMP -Path "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
Set-GPInheritance -Target "ou=COMP,ou=IT,dc=phende,dc=comp,dc=local" -IsBlocked Yes 

5) 为IT OU创建一个GPO,设置如下
a) 限制对控制面板的访问(在AD中创建一个用户
并将其设置为该用户)
b) 禁用LAN Manager Hash的存储。
c) 禁用强制系统重启(Windows Update)。
d) 禁用可移动媒体驱动器(CD、DVD)。
e) 禁用访客账户
f) 设置最小密码长度为10
g) 设置系统记住最近使用的6个密码(密码
历史)。
h) 在桌面上创建一个快捷方式来打开你喜欢的网站
i) 允许注册表访问
j) 设置浏览器(如internet explorer),在google.com打开。

$Name="TestGPO"
$OU= "ou=IT,dc=phende,dc=comp,dc=local"

$keya = 'HKCU\Software\MicrosoftWindows\CurrentVersion\Policies\Explorer'。
$ValueNamea = 'Nocontrolpanel'.

#$keyb = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNameb = 'NoChangingWallPaper'。

$keyc = 'HKLM\Software\Policies\Microsoft\WindowsUpdate\AU'。
$ValueNamec = "NoAutoBootWithLoggedOnUsers" 。

$keyd = 'HKLM\Software\Policies\Microsoft\Windows\RemovableStorageDevices\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}'
$ValueNamed = "Deny_Execute" (拒绝执行)。

#$keye = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\PoliciesActiveDesktop'.
#$ValueNamee = 'NoChangingWallPaper'。

#$keyf = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNamfe = 'NoChangingWallPaper'。

#$keyg = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNameg = 'NoChangingWallPaper'。

#$keyh = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNameh = 'NoChangingWallPaper'。

#$keyi = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNamei = 'NoChangingWallPaper'。

#$keyj = 'HKEY_CURRENT_USER\Software\MicrosoftWindows\CurrentVersion\PoliciesActiveDesktop'。
#$ValueNamej = 'NoChangingWallPaper' 。

# https://gpsearch.azurewebsites.net/#4847
# https://gpsearch.azurewebsites.net/Default_legacy.aspx

#new-gpo -name TestGPO | new-gplink -target "ou=marketing,dc=contoso,dc=com" | set-gppermissions -permissionlevel gpoedit -targetname "Marketing Admins" -targettype group



# Set-GPPermission -Name "ScreenSaverTimeOut" -TargetName "Petra" -TargetType User -PermissionLevel GPOApply



# new-gpo -name $Name | new-gplink -target "ou=$OU,dc=comp,dc=local"

#New-GPO -name $Name | Set-GPRegistryValue -Key $key `.
#-ValueName $ValueName -Type DWORD -Value 1 | Set-GPPermissions -Replace `.
#-PermissionLevel None -TargetName 'Authenticated Users' -TargetType group
#Set-GPPermissions -PermissionLevel gpoapply -TargetName 'Marketing Users' `.
#-TargetType group | New-GPLink -Target 'OU=Marketing,DC=cpandl,DC=com' -Order 1


New-GPO -name $Name
Set-GPRegistryValue -Key $keya -ValueName $ValueNamea -Type DWORD -Value 1
#SSet-GPRegistryValue -Key $keyb -ValueName $ValueNamec -Type DWORD -Value 1 | `
Set-GPRegistryValue -Key $keyc -ValueName $ValueNamec -Type DWORD -Value 1 | `。
Set-GPRegistryValue -Key $keyyd -ValueName $ValueNamed -Type DWORD -Value 1 | `。
#SSet-GPRegistryValue -Key $keye -ValueName $ValueNamee -Type DWORD -Value 1 | `。
#Set-GPRegistryValue -Key $keyf -ValueName $ValueNamef -Type DWORD -Value 1 |`。
#Set-GPRegistryValue -Key $keyg -ValueName $ValueNameg -Type DWORD -Value 1 | `。
#Set-GPRegistryValue -Key $keyyh -ValueName $ValueNameh -Type DWORD -Value 1 | `。
#Set-GPRegistryValue -Key $keyi -ValueName $ValueNamei -Type DWORD -Value 1 |`。
#Set-GPRegistryValue -Key $keyj -ValueName $ValueNamej -Type DWORD -Value 1 | `。
New-GPLink -Target $OU

6) 在DNS中,为服务器添加一个CNAME记录(名称是可选的)。


Add-DnsServerResourceRecord -CName -Name "something" -HostNameAlias "gf-win-u03.phende.comp.local" -ZoneName "phende.comp.local"

# Add-DnsServerResourceRecord -CName -Name "hende" -HostNameAlias "gf-win-u03.phende.com.local" -ZoneName "phende.com.local" -AllowUpdateAny -TimeToLive 01:00:00
# Add-DnsServerResourceRecordCName -Name "hende" -HostNameAlias "gf-win-u03.phende.comp.local" -ZoneName "phende.comp.local"

7) 获取机器的arp表和MAC地址

获取网络邻居
获取Mac

8) 安装一个DHCP服务器。假设一个有200个客户和10个服务器的网络、
5台打印机、4个AP和3个第3层交换机
a) 按上述方法设置范围。
b) 范围应保持不活动

# https://learn.microsoft.com/en-us/windows-server/networking/technologies/dhcp/dhcp-deploy-wps
# https://argonsys.com/microsoft-cloud/library/how-to-manage-dhcp-using-powershell/
安装-WindowsFeature DHCP -包括ManagementTools
netsh DHCP添加安全组
重新启动服务dhcpserver

# Add-DhcpServerInDC -DnsName DHCP.phende.comp.local -IPAddress 192.168.1.6
# Get-DhcpServerInDC

Add-DhcpServerV4Scope -Name "DHCP Scope" -StartRange 192.168.1.1 -EndRange 192.168.1.222 -SubnetMask 255.255.0
Add-Dhcpserv4ExclusionRange -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -StartRange 192.168.1.1 -EndRange 192.168.1.22
Set-DhcpServ4Scope -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -State InActive
# Remove-Dhcpserverv4ExclusionRange -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -EndRange 192.168.1.222
# Set-DhcpServerV4OptionValue -DnsServer 127.0.0.1 -Router 10.39.91.1
# Set-DhcpServ4Scope -ScopeId 127.0.0.1 -LeaseDuration 1.00:00:00