Powershell ошибка отказано в доступе

  • Remove From My Forums
  • General discussion

  • Добрый день!

    Я в PS и программировании недавно, помогите, пожалуйста, разобраться с проблемой. Есть около 100 рабочих мест, все под Win7. На некоторых PC (около 15) не отрабатывает любой PS скрипт, который должен дозаписывать в файл, расположенный
    в сети. Например такой(собирает данные о текущем пользователе):

    cls
    $user = [Environment]::UserName
    $date = Get-Date -Format "d.MM.yyyy H:mm:ss"
    
    $sys = Get-CimInstance CIM_ComputerSystem
    $hostname = $sys.name.ToString()
    
    $path_root = '\192.168.50.25commoncommonInventory'
    $path = $path_root +""+ $hostname
    
    #create work dir
    if (Test-Path $path) {
       Write-Host "Folder exist!"
    }Else{
        New-Item -Path $path_root -Name $hostname -ItemType directory
        }
    
    $FIO = Get-WMIObject Win32_UserAccount | where name -eq $user #FIO from AD
    
    $hostname + "|" + $FIO.FullName + "|"  + $date | Out-File -FilePath $pathfio.txt -Append -Encoding unicode

    Права у пользователя на папку и файл есть все. Первый раз файл создается и туда записываются данные; при следующем выполнении Out-File происходит ошибка:

    Out-File : Отказано в доступе по данному пути.
    C:BATINVget_fio&usrname&last_logon.ps1:20 знак:50
    + $hostname + «|» + $FIO.FullName + «|»  + $date | Out-File -FilePath $pathfio.tx …
    +                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Out-File], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.OutFileCommand

    Гуглил ошибку, однако, ничего внятного не нашел.

    • Changed type

      Thursday, September 3, 2015 11:34 AM
      Отсутвие активности более 2х недель

Доброго времени суток.

Windows 2012R2

Name             : ConsoleHost
Version          : 4.0
InstanceId       : 01df85c7-c3a3-4dc4-9f7c-82c26b02f24a
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : ru-RU
CurrentUICulture : ru-RU
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace



PS C:Windowssystem32> Get-ExecutionPolicy
Unrestricted

В ISE (запущенном от имени администратора) сделал скрипт добавления пользователя в домен:

Import-Module activedirectory
#Имя в оснастке dsa.msc
$Name="vasyan"
#Имя
$GivenName="Василий"
#Первая буква отчества
$Initials="В"
#Фамилия
$SurName="Васильев"
#Полное отображаемое имя
$DisplayName="Васильев Василий Васильевич"
#SamAccountname
$SamAccountName="v.vasilyev"
#UserPrincipalName
$UserPrincipalName="v.vasilyev@nokogerra.local"
#Email
$EmailAddress="vvas@domain.ru"
#Номер мобильного
$MobilePhone="9236494338"
#OU
$Path="CN=Users,DC=nokogerra,DC=local"
New-ADuser -Name $Name -SamAccountName $SamAccountName -Surname $Surname -GivenName $GivenName -DisplayName $DisplayName -ChangePasswordAtLogon $false -Company "somecompany" -Country ru -EmailAddress $EmailAddress -Enabled $true -MobilePhone $MobilePhone -PasswordNeverExpires $true -Path $Path -AccountPassword (ConvertTo-SecureString -AsPlainText "some_password" -Force)
#Референсный пользователь, с которого берется членство в группах, которое будет применено к новому пользователю
$groups=Get-ADPrincipalGroupMembership nokogerra
foreach ($group in $groups) {Add-ADGroupMember -Identity $group -Members $SamAccountName}
pause

При выполнении из ISE — отрабатывает, при попытке выполнить ps1 из контекстного меню файла (выполнить с помощью Powershell) получаю «Отказано в доступе», т.е. требуется запуск «от имени администратора», без отключения
UAC это как-то можно исправить?

И еще вопрос: при отработке части скрипта по добавлению пользователя в соответствующие группы получаю ошибку:

Add-ADGroupMember : Указанный пользователь уже является членом заданной группы, либо группа не может быть удалена, так как содержит к
ак минимум одного пользователя
C:UsersnokogerraDesktopadduser.ps1:25 знак:30
+ foreach ($group in $groups) {Add-ADGroupMember -Identity $group -Members $SamAcc ...
+                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (CN=Пользователи...ogerra,DC=local:ADGroup) [Add-ADGroupMember], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1320,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

Очевидно, что это из-за того, что пользователь уже состоит в группе «Пользователи домена» (в другие группы пользователь добавляется корректно). Можно на этапе foreach как-то исключить эту группу из обработки?

При работе с командлетами вносящими изменения в файловую систему (создание, изменение или удаление файлов и данных в них), может возникнуть ошибка

New-Item: Access to the path '...' is denied.

Пример команды, вызывающей данную ошибку:

New-Item c:test.txt

Эту же самую ошибку могут вызвать командлеты:

  • Clear-Item
  • New-Item
  • Remove-Item
  • Rename-Item

В сообщении ошибки сказано, что доступ к указанному пути отклонён. Причиной является недостаток прав на запись, изменение, удаление файла, например, из-за того, что вы не можете записывать в выбранную папку.

Чтобы исправить эту ошибку, нужно запустить PowerShell с правами администратора. Как это сделать смотрите в статье «Как запустить PowerShell с правами администратора».

Быстрый способ запустить PowerShell с правами администратора прямо в командной строке:

Start-Process PowerShell -Verb RunAs

Эта команда запустит версию PowerShell 5 или PowerShell 6 — в зависимости от того, что у вас установлено в системе по умолчанию. Чтобы запустить последнюю версию, которую вы установили вручную, то есть PowerShell 7, выполните команду:

Start-Process pwsh -Verb RunAs

Ошибка «Access to the path ‘…’ is denied» на Linux

На Linux может возникнуть такая же ошибка при выполнении аналогичных команд:

New-Item /test.txt

Текст ошибки:

New-Item: Access to the path '/test.txt' is denied.

Чтобы её исправить, запустите PowerShell с sudo:

sudo pwsh

В результате ошибка исчезнет и команды будут выполнять нужные вам действия:

Связанные статьи:

  • Ошибка 0x800702e4 при запуске `C:Program FilesPowerShell7-previewpwsh.exe’ (РЕШЕНО) (75.6%)
  • Как запустить PowerShell с правами администратора (75.6%)
  • Как установить PowerShell в Linux (74.4%)
  • Как проверить, запущен ли скрипт PowerShell или терминал PowerShell от имени администратора? (РЕШЕНО) (68.3%)
  • Как получить справку по командам PowerShell (50%)
  • Как проверить версию PowerShell в Windows 11 (RANDOM — 50%)

Рекомендуется Вам:

00aelx

1 / 1 / 1

Регистрация: 22.02.2014

Сообщений: 24

1

12.11.2018, 09:28. Показов 31425. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Нашел на просторах интернета вот такой скрипт:

PowerShell
1
2
3
4
5
6
$root  = 'E:Backup_logAudit1'
$limit = (Get-Date).AddDays(-37)
 
Get-ChildItem $root -Recurse | ? {
  -not $_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item

Пытаюсь его запустить в powershell пишет отказано в доступе. Далее хочу его установить в планировщик задач, а планировщик задач только открывает его как текстовый документ.

Как запустить этот скрипт от имени администратора, чтобы по двойному щелчку он запускался.
Как залить его в планировщик задач чтобы он работал, а не запускался как текстовый файл?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

12.11.2018, 09:28

5

v_svitere

774 / 423 / 137

Регистрация: 03.06.2009

Сообщений: 1,223

Записей в блоге: 4

12.11.2018, 09:57

2

00aelx,

Как залить его в планировщик задач чтобы он работал, а не запускался как текстовый файл?

А как вы его запускаете через планировщик?
Нужно примерно вот так

PowerShell
1
powershell -file "D:testmyfile.ps1"



0



ilya0610

1 / 1 / 2

Регистрация: 18.11.2013

Сообщений: 337

12.11.2018, 10:29

3

00aelx,

Цитата
Сообщение от 00aelx
Посмотреть сообщение

Пытаюсь его запустить в powershell пишет отказано в доступе.

введите команду

PowerShell
1
Set-ExecutionPolicy Unrestricted



0



774 / 423 / 137

Регистрация: 03.06.2009

Сообщений: 1,223

Записей в блоге: 4

12.11.2018, 10:35

4

ilya0610,
К чему вы это советуете?
Это политика выполнения сценариев, каким образом она влияет на права доступа к директориям?



0



162 / 74 / 23

Регистрация: 06.07.2017

Сообщений: 315

12.11.2018, 10:39

5

powershell -windowstyle hidden -exec bypass -file «myscript.ps1»

Соответственно учетка от которой вы создаете задание должна иметь доступ до директории, в которой лежит скрипт.



0



774 / 423 / 137

Регистрация: 03.06.2009

Сообщений: 1,223

Записей в блоге: 4

12.11.2018, 10:45

6

kapitan_lyagysh,
Ключ hidden, по идее, не должен требоваться если задача запускается в планировщике при варианте
Выполнять для незарегистрированного пользователя.



0



Понравилась статья? Поделить с друзьями:
  • Powershell вывод в консоль ошибок
  • Powershell все ошибки в файл
  • Prinfix ошибка файл не найден обратитесь к администратору
  • Prince of persia warrior within ошибка русский язык ввода
  • Prince of persia the warrior within синтаксическая ошибка