SHOW:
|
|
- or go back to the newest paste.
1 | $username = "skan" | |
2 | - | $haslo = '$Kan123..' |
2 | + | $haslo = '$kan123..' |
3 | $nazwa_folderu = "SKAN" | |
4 | ||
5 | $this_dir = pwd | |
6 | $lokalizacja_folderu = [Environment]::GetFolderPath("Desktop") | |
7 | ||
8 | If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) | |
9 | { | |
10 | # Relaunch as an elevated process: | |
11 | Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs | |
12 | exit | |
13 | } | |
14 | ||
15 | ||
16 | ### | |
17 | ||
18 | $oc_i = "yellow" | |
19 | $oc_d = "blue" | |
20 | $oc_o = "green" | |
21 | ||
22 | $computername = "$env:computername" | |
23 | $account = $env:computername + "\" + $username | |
24 | ## interactive password # $Password = Read-Host -AsSecureString | |
25 | $fq_place = "$lokalizacja_folderu\$nazwa_folderu" | |
26 | $Password = "$haslo" | ConvertTo-SecureString -AsPlainText -Force | |
27 | ||
28 | ||
29 | function write-text($ForegroundColor) { | |
30 | $fc = $host.UI.RawUI.ForegroundColor;$host.UI.RawUI.ForegroundColor = $ForegroundColor | |
31 | if ($args) { Write-Output $args }else { $input | Write-Output } | |
32 | $host.UI.RawUI.ForegroundColor = $fc | |
33 | } | |
34 | ||
35 | function 1_user_create { | |
36 | [CmdletBinding()] | |
37 | param ( [string]$username, [SecureString] $Password) | |
38 | if ( Get-LocalUser -Name $username -ErrorAction SilentlyContinue ) | |
39 | { | |
40 | Remove-LocalUser -Name $username | |
41 | write-text $oc_d "User deleted" | |
42 | } | |
43 | New-LocalUser -Name "$username" -Password $Password -FullName "$username" | |
44 | write-text $oc_d "User created" | |
45 | } | |
46 | ||
47 | ||
48 | function 1B_user_repair { | |
49 | [CmdletBinding()] | |
50 | param ( [string]$username ) | |
51 | if ( Get-LocalUser -Name $username -ErrorAction SilentlyContinue ) | |
52 | { | |
53 | set-localuser -name "$username" -password $Password | |
54 | write-text $oc_d "Change password for user" | |
55 | } | |
56 | else | |
57 | { | |
58 | write-text $oc_d "User don't exist!" | |
59 | } | |
60 | } | |
61 | function 2_user_hide { | |
62 | [CmdletBinding()] | |
63 | param ( [string]$username ) | |
64 | - | # add check if winlogon exist! |
64 | + | |
65 | - | $location = 'hklm:\SOFTWARE\Microsoft\windows nt\currentversion\winlogon' |
65 | + | |
66 | - | Set-Location $location |
66 | + | |
67 | - | if (Test-Path "$location\SpecialAccount") { |
67 | + | |
68 | - | write-text $oc_d 'user was already hidden' |
68 | + | |
69 | set-localuser -Name $username -PasswordNeverExpires:$TRUE | |
70 | - | else |
70 | + | |
71 | write-text $oc_d "User password never expires" | |
72 | - | New-Item -Path "$location\SpecialAccount" -Name 'UserList' |
72 | + | |
73 | - | New-ItemProperty -Path "$location\SpecialAccount\UserList" -Name "$username" -Value '0' -PropertyType DWORD |
73 | + | |
74 | - | write-text $oc_d "user hidden" |
74 | + | |
75 | [CmdletBinding()] | |
76 | - | pop-location |
76 | + | |
77 | New-Item -ItemType Directory -Force -Path "$fq_place" | |
78 | write-text $oc_d "Directory created" | |
79 | } | |
80 | ||
81 | function 5_share_create { | |
82 | [CmdletBinding()] | |
83 | param ( [string]$nazwa_folderu, | |
84 | [string]$fq_place, | |
85 | [string]$account | |
86 | ) | |
87 | ||
88 | $ust_udzialu = @{ 'Name' = $nazwa_folderu; | |
89 | 'Path' = "$fq_place"; | |
90 | 'FullAccess' = "$account" | |
91 | } | |
92 | ||
93 | if ( Get-SmbShare -Name "$nazwa_folderu" -ErrorAction SilentlyContinue ) | |
94 | { Remove-SmbShare -Name "$nazwa_folderu" -force } | |
95 | # New-SmbShare $ust_udzialu | |
96 | New-SmbShare -Name "$nazwa_folderu" -Path "$fq_place" -FullAccess "$account" | |
97 | write-text $oc_d "Share created" | |
98 | } | |
99 | ||
100 | function 6_win_lower_cypher { | |
101 | $locat2 = 'hklm:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0' | |
102 | if (Test-Path $locat2) { | |
103 | $Key = Get-Item -LiteralPath "$locat2" | |
104 | if ($Key.GetValue("NtlmMinClientSec", $null) -ne 0) { New-ItemProperty -Path "$locat2" -Name "NtlmMinClientSec" -PropertyType DWORD -Value '0' } | |
105 | if ($Key.GetValue("NtlmMinServerSec", $null) -ne 0) { New-ItemProperty -Path "$locat2" -Name "NtlmMinServerSec" -PropertyType DWORD -Value '0' } | |
106 | } | |
107 | else | |
108 | { write-text red "there is no $($locat2)" } | |
109 | write-text $oc_d "lowered minimum cypher" | |
110 | } | |
111 | ||
112 | function 7_win_net_private { | |
113 | if ( -not ( "PRIVATE" -like (Get-NetconnectionProfile | select-object NetworkCategory).networkcategory) ) { | |
114 | Get-NetconnectionProfile | Set-NetconnectionProfile -NetworkCategory Private | |
115 | write-text $oc_o "network set as private" | |
116 | } | |
117 | else { write-text $oc_d "network was already as private" } | |
118 | } | |
119 | ||
120 | function 8_win_smb1_set { | |
121 | if ( "Enabled" -eq (Get-WindowsOptionalFeature -online -FeatureName "SMB1protocol-server" | select-object -property state).state ) ` | |
122 | { write-text $oc_d "smb1 is installed" } | |
123 | else { | |
124 | Enable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol" -All; | |
125 | write-text $oc_o "enabled smb1" | |
126 | } | |
127 | } | |
128 | ||
129 | function A_get_user_info { | |
130 | write-text $oc_d "Username = $username" | |
131 | write-text $oc_d "haslo = $haslo" | |
132 | write-text $oc_d "nazwa udzialu = $nazwa_folderu" | |
133 | } | |
134 | ||
135 | function B_get_interface_info { | |
136 | get-NetIPInterface ` | |
137 | | where-object { ( $_.addressfamily -like "IPv4" ) -and ( $_.ConnectionState -eq "Connected" ) } ` | |
138 | | select-object ifindex, ifalias, dhcp, connectionstate ` | |
139 | | ForEach-Object ` | |
140 | { | |
141 | Get-NetIPAddress -interfaceindex $_.ifindex ` | |
142 | | where-object { ( $_.addressfamily -like "ipv4" ) -and ( -not ( $_.IPv4Address -like '127.0.0.1' )) } ` | |
143 | | Select-Object prefixorigin, suffixorigin, type, store, addressstate, ipv4address -outvariable lol ` | |
144 | | Out-Null ; | |
145 | Get-NetAdapter -interfaceindex $_.ifindex -erroraction ignore | select-object interfacedescription, macaddress -outvariable out | out-null; | |
146 | $members = @{"Connectionstate" = $_.connectionstate; | |
147 | "DHCP" = $_.dhcp; | |
148 | "ifalias" = $_.ifalias; | |
149 | "InterfaceDescription" = $out.interfacedescription; | |
150 | "macaddress" = $out.macaddress; | |
151 | "hostname" = $env:computername | |
152 | } | |
153 | if ( $lol.ipv4address ) { write-text red "\\$($lol.ipv4address)\$($scan_smbdir)" } | |
154 | if ( $lol -ne $null ) { | |
155 | $lol | add-member -notepropertymembers $members | |
156 | $lol | Format-table -wrap hostname, ifalias, dhcp, ipv4address, addressstate, connectionstate, macaddress, interfacedescription #-HideTableHeaders | |
157 | } | |
158 | } | |
159 | ||
160 | } | |
161 | ||
162 | function C_spooler_restart { | |
163 | Restart-Service -Name Spooler -Force | |
164 | } | |
165 | ||
166 | function D_spooler_clear { | |
167 | Stop-Service -Name Spooler -Force | |
168 | Move-Item -Path "$env:SystemRoot\System32\spool\PRINTERS\*.*" -Destination 'C:\demo\new' -Force | |
169 | } | |
170 | ||
171 | function E_check_user { | |
172 | param ( [string] $username, [string] $password) | |
173 | if ( i_check_user $username $password ) {write-text "GREEN" "Account creditentials OK" | |
174 | ||
175 | } | |
176 | else { | |
177 | write-text "RED" "BAD creditentials" | |
178 | } | |
179 | ||
180 | } | |
181 | ||
182 | function i_check_user { | |
183 | param ( [string] $username, [string] $password) | |
184 | $computer = $env:COMPUTERNAME | |
185 | Add-Type -AssemblyName System.DirectoryServices.AccountManagement | |
186 | $obj = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('machine',$computer) | |
187 | $obj.ValidateCredentials($username, $password) | |
188 | } | |
189 | ||
190 | ||
191 | # set_user $username | |
192 | # set_share $nazwa_folderu $fq_place $account | |
193 | # set_directory $fq_place | |
194 | ||
195 | $menu=@" | |
196 | 0 ALL | |
197 | ||
198 | 1 user: create profile | |
199 | 2 user: hide profile from windows logon | |
200 | 3 user: set password to never expire & user can't change password themselves | |
201 | 4 directory: create on desktop | |
202 | 5 share: create share | |
203 | 6 windows: lower cypher on sharing | |
204 | 7 windows: set network to private | |
205 | 8 windows components: enable smb1 server | |
206 | ||
207 | 9 repair user | |
208 | ||
209 | A get user info | |
210 | B get interface info | |
211 | ||
212 | Q Quit | |
213 | ||
214 | Select a task by number or Q to quit | |
215 | "@ | |
216 | ||
217 | Function Invoke-Menu { | |
218 | [cmdletbinding()] | |
219 | Param( | |
220 | [Parameter(Position=0,Mandatory=$True,HelpMessage="Enter your menu text")] | |
221 | [ValidateNotNullOrEmpty()] | |
222 | [string]$Menu, | |
223 | [Parameter(Position=1)] | |
224 | [ValidateNotNullOrEmpty()] | |
225 | [string]$Title = "My Menu", | |
226 | [Alias("cls")] | |
227 | [switch]$ClearScreen | |
228 | ) | |
229 | ||
230 | #clear the screen if requested | |
231 | # if ($ClearScreen) { Clear-Host } | |
232 | ||
233 | #build the menu prompt | |
234 | $menuPrompt = $title | |
235 | #add a return | |
236 | $menuprompt+="`n" | |
237 | #add an underline | |
238 | $menuprompt+="-"*$title.Length | |
239 | #add another return | |
240 | $menuprompt+="`n" | |
241 | #add the menu | |
242 | $menuPrompt+=$menu | |
243 | ||
244 | Read-Host -Prompt $menuprompt | |
245 | ||
246 | } #end function | |
247 | ||
248 | Do { | |
249 | #use a Switch construct to take action depending on what menu choice | |
250 | #is selected. | |
251 | Switch (Invoke-Menu -menu $menu -title "My Help Desk Tasks" -clear) | |
252 | { | |
253 | "0" {write-text "yellow" "all" | |
254 | 1_user_create $username $Password | |
255 | 2_user_hide $username | |
256 | 3_user_neverexp $username | |
257 | 4_directory_create $fq_place | |
258 | 5_share_create $nazwa_folderu $fq_place $username | |
259 | 6_win_lower_cypher | |
260 | cd $this_dir | |
261 | 7_win_net_private | |
262 | 8_win_smb1_set | |
263 | A_get_user_info | |
264 | B_get_interface_info | |
265 | } | |
266 | "1" {write-text "yellow" "user: create profile" | |
267 | 1_user_create $username | |
268 | } | |
269 | "2" {write-text "yellow" "user: hide profile from windows logon" | |
270 | 2_user_hide $username | |
271 | } | |
272 | "3" {write-text "yellow" "user: set password to never expire & user can't change password themselves" | |
273 | 3_user_neverexp $username | |
274 | } | |
275 | "4" {write-text "yellow" "directory: create on desktop" | |
276 | 4_directory_create "$fq_place" | |
277 | } | |
278 | "5" {write-text "yellow" "share: create share" | |
279 | 5_share_create "$nazwa_folderu" "$fq_place" "$username" | |
280 | } | |
281 | "6" {write-text "yellow" "windows: lower cypher on sharing" | |
282 | 6_win_lower_cypher | |
283 | } | |
284 | "7" {write-text "yellow" "windows: set network to private" | |
285 | 7_win_net_private | |
286 | } | |
287 | "8" {write-text "yellow" "windows components: enable smb1 server" | |
288 | 8_win_smb1_set | |
289 | } | |
290 | "9" { | |
291 | write-text "yellow" "repairing user" | |
292 | 3_user_neverexp $username | |
293 | 1B_user_repair $username | |
294 | 2_user_hide $username | |
295 | } | |
296 | "A" { | |
297 | write-text "yellow" "User Info" | |
298 | A_get_user_info | |
299 | } | |
300 | "B" { | |
301 | write-text "yellow" "Interface" | |
302 | B_get_interface_info | |
303 | } | |
304 | "C" { | |
305 | ||
306 | } | |
307 | "D" { | |
308 | ||
309 | } | |
310 | "E" { | |
311 | E_check_user $username $haslo | |
312 | } | |
313 | ||
314 | "Q" {write-text "yellow" "Goodbye" | |
315 | Return | |
316 | } | |
317 | Default { | |
318 | Write-Warning "Invalid Choice. Try again." | |
319 | sleep -milliseconds 750 | |
320 | } | |
321 | } | |
322 | } While ($True) |