farag
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Возвращаясь к моей idee fixe... Какой-то монстр вышел. Можно ли сделать лучше? Код: param( [Parameter(Mandatory = $true)] [string]$drive ) $drive = $drive + ':' Function KnownFolderPath { Param ( [Parameter(Mandatory = $true)] [ValidateSet('Documents', 'Downloads')] [string]$KnownFolder, [Parameter(Mandatory = $true)] [string]$Path ) $KnownFolders = @{ 'Documents' = @('FDD39AD0-238F-46AF-ADB4-6C85480369C7','F42EE2D3-909F-4907-8871-4C22FC0BF756'); 'Downloads' = @('374DE290-123F-4565-9164-39C4925E467B','7D83EE9B-2244-4E70-B1F5-5393042AF1E4'); } $Type = ([System.Management.Automation.PSTypeName]'KnownFolders').Type $Signature = @' [DllImport("shell32.dll")] public extern static int SHSetKnownFolderPath(ref Guid folderId, uint flags, IntPtr token, [MarshalAs(UnmanagedType.LPWStr)] string path); '@ $Type = Add-Type -MemberDefinition $Signature -Name 'KnownFolders' -Namespace 'SHSetKnownFolderPath' -PassThru # return $Type::SHSetKnownFolderPath([ref]$KnownFolders[$KnownFolder], 0, 0, $Path) ForEach ($guid in $KnownFolders[$KnownFolder]) { $Type::SHSetKnownFolderPath([ref]$guid, 0, 0, $Path) } Attrib +r $Path } $Downloads = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" IF ($Downloads -ne "$drive\Загрузки") { IF (!(Test-Path -Path $drive\Загрузки)) { New-Item -Path $drive\Загрузки -Type Directory -Force } KnownFolderPath -KnownFolder Downloads -Path "$drive\Загрузки" New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{7D83EE9B-2244-4E70-B1F5-5393042AF1E4}" -Type ExpandString -Value "$drive\Загрузки" -Force } $Documents = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal IF ($Documents -ne "$drive\Документы") { IF (!(Test-Path -Path $drive\Документы)) { New-Item -Path $drive\Документы -Type Directory -Force } KnownFolderPath -KnownFolder Documents -Path "$drive\Документы" New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" -Type ExpandString -Value "$drive\Документы" -Force } | Добавлено: dragovich01 Лучше послушать более опытных завсегдатаев на предмет, что исправить. Я лишь посоветовал отказаться от WMI, так как это был удел PowerShell 2.0. | Всего записей: 2477 | Зарегистр. 27-07-2009 | Отправлено: 10:11 12-02-2019 | Исправлено: farag, 10:20 12-02-2019 |
|