View difference between Paste ID: Dinm1qHW and hHs1wQaz
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)