added dfs-set-active.ps1
This commit is contained in:
parent
a23cdcf345
commit
c64f3f1bb7
53
README.md
53
README.md
|
@ -5,13 +5,18 @@ Tools for managing Windows setting
|
|||
* [`hvswitch`.cmd](https://git.hmp.today/pavel.muhortov/tweaks-for-windows#hvswitch-cmd)
|
||||
* [`rdpusers`.cmd](https://git.hmp.today/pavel.muhortov/tweaks-for-windows#rdpusers-cmd)
|
||||
* [`1cibases`.cmd](https://git.hmp.today/pavel.muhortov/tweaks-for-windows#1cibases-cmd)
|
||||
* [`dfs-set-active`.ps1](https://git.hmp.today/pavel.muhortov/tweaks-for-windows#dfs-set-active-ps1)
|
||||
|
||||
____
|
||||
|
||||
## `hvswitch`.cmd
|
||||
|
||||
**Description:** Microsoft Hyper-V switch on/off
|
||||
**Dependencies:** Windows (tested version 10.0.19043)
|
||||
**Description:**
|
||||
> Microsoft Hyper-V switch on/off
|
||||
|
||||
**Dependencies:**
|
||||
>
|
||||
> * Windows (tested version 10.0.19043)
|
||||
|
||||
| POSITION | PARAMETERS | DESCRIPTION | DEFAULT |
|
||||
|-----------|--------------|------------------------|---------------|
|
||||
|
@ -29,8 +34,13 @@ ____
|
|||
|
||||
## `rdpusers`.cmd
|
||||
|
||||
**Description:** RDS Shadow Connection
|
||||
**Dependencies:** Windows (tested version 6.3.9600), permission on target hostname (*gpedit.msc -> Computer Configuration -> Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections -> Set rules for remote control of Remote Desktop Services user sessions: Full Control without users's permission*)
|
||||
**Description:**
|
||||
> RDS Shadow Connection
|
||||
|
||||
**Dependencies:**
|
||||
>
|
||||
> * Windows (tested version 6.3.9600)
|
||||
> * permission on target hostname (*gpedit.msc -> Computer Configuration -> Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections -> Set rules for remote control of Remote Desktop Services user sessions: Full Control without users's permission*)
|
||||
|
||||
| POSITION | PARAMETERS | DESCRIPTION | DEFAULT |
|
||||
|-----------|--------------|------------------------|---------------|
|
||||
|
@ -52,7 +62,7 @@ ____
|
|||
**Dependencies:**
|
||||
>
|
||||
> * Windows (tested version 6.3.9600)
|
||||
> * privileged rights for backup
|
||||
> * privileged rights (only for backup)
|
||||
|
||||
| POSITION | PARAMETERS | DESCRIPTION | DEFAULT |
|
||||
|-----------|--------------|------------------------|---------------|
|
||||
|
@ -67,4 +77,35 @@ ____
|
|||
2\. Only if you need to rewrite user changes at their logon:
|
||||
>
|
||||
> * Create `%SYSTEMDRIVE%\Windows\System32\GroupPolicy\User\Scripts\Logon\1cibases.cmd`
|
||||
> * gpedit.msc -> User Configuration -> Administrative Templates -> System -> Logon -> Run these programs at user logon: %SYSTEMDRIVE%\Windows\System32\GroupPolicy\User\Scripts\Logon\1cibases.cmd qn r
|
||||
> * gpedit.msc -> User Configuration -> Administrative Templates -> System -> Logon -> Run these programs at user logon: `%SYSTEMDRIVE%\Windows\System32\GroupPolicy\User\Scripts\Logon\1cibases.cmd qn r`.
|
||||
|
||||
____
|
||||
|
||||
## `dfs-set-active`.ps1
|
||||
|
||||
**Description:**
|
||||
> Set active server for used DFS namespaces.
|
||||
|
||||
**Dependencies:**
|
||||
>
|
||||
> * Windows (tested versions 6.1.7601, 10.0.19045, 10.0.22621)
|
||||
> * privileged rights
|
||||
|
||||
| POSITION | PARAMETERS | DESCRIPTION | DEFAULT |
|
||||
|-----------|--------------|------------------------|---------------|
|
||||
| 1 | **-child** |internal execute switch | `false` |
|
||||
|
||||
### `dfs-set-active`.ps1 setup
|
||||
|
||||
1\. Create config file.
|
||||
|
||||
```powershell
|
||||
@"
|
||||
\\domain.local\dfs_namespace_1\share_dir_1:\\server_1.domain.local\share_dir_1
|
||||
\\domain.local\dfs_namespace_2\share_dir_2:\\server_2.domain.local\share_dir_2
|
||||
"@ | Out-File $env:\Windows\System32\GroupPolicy\Machine\Scripts\Startup\dfs-set-active.cfg -Encoding "UTF8"
|
||||
```
|
||||
|
||||
2\. Create startup script.
|
||||
|
||||
gpedit.msc -> Computer Settings -> Policies -> Windows Settings -> Scripts (Startup/Shutdown) -> Startup -> PowerShell Scripts: `%SYSTEMDRIVE%\Windows\System32\GroupPolicy\Machine\Scripts\Startup\dfs-set-active.ps1`.
|
||||
|
|
100
dfs-set-active.ps1
Normal file
100
dfs-set-active.ps1
Normal file
|
@ -0,0 +1,100 @@
|
|||
param(
|
||||
[Parameter(Mandatory=$false,Position=0)][switch]$child
|
||||
)
|
||||
|
||||
|
||||
function Get-PSVersion {
|
||||
if (Test-Path Variable:PSVersionTable) {
|
||||
return $PSVersionTable.PSVersion.ToString()
|
||||
}
|
||||
else {
|
||||
return "1.0.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
function Test-AdminRights {
|
||||
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
|
||||
return $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
|
||||
}
|
||||
|
||||
function Set-DFSActive {
|
||||
foreach ($line in $(Get-Content -Path $Global:cfg)) {
|
||||
$dfsLink = $line.Split(':')[0]
|
||||
$smbPath = $line.Split(':')[1]
|
||||
Set-Location "Microsoft.PowerShell.Core\FileSystem::$dfsLink"
|
||||
Start-Process dfsutil.exe -ArgumentList "client","property","state","active","$dfsLink","$smbPath"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$Global:cfg = $MyInvocation.MyCommand.Path.Replace('.ps1', '.cfg')
|
||||
|
||||
|
||||
if (!(Test-AdminRights)) {
|
||||
if (!($child)) {
|
||||
$params = New-Object System.Collections.ArrayList
|
||||
foreach ($key in $MyInvocation.BoundParameters.Keys) {
|
||||
[void]$params.Add("-$key")
|
||||
[void]$params.Add($PSBoundParameters.$key)
|
||||
}
|
||||
Start-Process powershell.exe -Verb RunAs -ArgumentList (
|
||||
"-NoProfile -File ""{0}"" -child $($params -join " ")" -f $($MyInvocation.MyCommand.Definition)
|
||||
)
|
||||
exit
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!(Test-Path -Path "$env:SystemRoot\System32\dfsutil.exe")) {
|
||||
try {
|
||||
$system = $(Get-WmiObject -Class "Win32_OperatingSystem")
|
||||
# Windows 11, 10, 2022, 2019, 2016, 8.1, 2012R2
|
||||
if (($system.Version -like '10.0.*') -or ($system.Version -like '6.3.*')) {
|
||||
# Workstation
|
||||
if ($system.ProductType -like '1') {
|
||||
$capability = "Rsat.FileServices.Tools"
|
||||
if (!(Get-WindowsCapability -Name "*$capability*" -Online | Where-Object State -eq 'Installed' -ErrorAction Stop)) {
|
||||
Get-WindowsCapability -Name "*$capability*" -Online | Add-WindowsCapability -Online -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
# DomainController, Server
|
||||
if (($system.ProductType -like '2') -or ($system.ProductType -like '3')) {
|
||||
$capability = "RSAT-DFS-Mgmt-Con"
|
||||
if(!(Get-WindowsFeature -Name "*$capability*" | Where-Object InstallState -eq 'Installed' -ErrorAction Stop)) {
|
||||
Get-WindowsFeature -Name "*$capability*" | Install-WindowsFeature -IncludeAllSubFeature -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
}
|
||||
# Windows 7, 2008R2
|
||||
if ($system.Version -like '6.1.*') {
|
||||
# Workstation
|
||||
if ($system.ProductType -like '1') {
|
||||
if (!(Get-WmiObject -Class "Win32_QuickFixEngineering" | Where-Object { $_.HotFixID -like '*958830' })) {
|
||||
if ($system.OSArchitecture -like '32*') {
|
||||
Start-Process wusa.exe -ArgumentList "\\capital.local\sys\repo\distrib\microsoft\rsat\win7\Windows6.1-KB958830-x86.msu","/quiet","/norestart" -ErrorAction Stop -Wait
|
||||
}
|
||||
if ($system.OSArchitecture -like '64*') {
|
||||
Start-Process wusa.exe -ArgumentList "\\capital.local\sys\repo\distrib\microsoft\rsat\win7\Windows6.1-KB958830-x64.msu","/quiet","/norestart" -ErrorAction Stop -Wait
|
||||
}
|
||||
}
|
||||
Start-Process dism.exe -ArgumentList "/Online","/Enable-Feature:RemoteServerAdministrationTools" -ErrorAction Stop -Wait
|
||||
Start-Process dism.exe -ArgumentList "/Online","/Enable-Feature:RemoteServerAdministrationTools-Roles" -ErrorAction Stop -Wait
|
||||
Start-Process dism.exe -ArgumentList "/Online","/Enable-Feature:RemoteServerAdministrationTools-Roles-FileServices" -ErrorAction Stop -Wait
|
||||
Start-Process dism.exe -ArgumentList "/Online","/Enable-Feature:RemoteServerAdministrationTools-Roles-FileServices-Dfs" -ErrorAction Stop -Wait
|
||||
}
|
||||
# DomainController, Server
|
||||
if (($system.ProductType -like '2') -or ($system.ProductType -like '3')) {
|
||||
}
|
||||
}
|
||||
}
|
||||
catch [System.Management.Automation.CommandNotFoundException] {
|
||||
Write-Host "Powershell $(Get-PSVersion) need to update"
|
||||
Start-Sleep 10
|
||||
Exit 1
|
||||
}
|
||||
}
|
||||
if (!(Test-Path -Path "$($Global:cfg)")) {
|
||||
Exit 1
|
||||
}
|
||||
Set-DFSActive
|
||||
Exit 0
|
||||
}
|
Loading…
Reference in New Issue
Block a user