无法弄清楚为什么我的Powershell脚本会收到权限错误

时间:2014-05-07 15:15:55

标签: powershell

我无法弄清楚为什么我会获得权限错误,即使我将脚本作为域管理员运行,这是在我试图删除的文件/文件夹的完整控制组中。在运行脚本的PC上未启用UAC。无论我是否将enter-PSsession用于文件服务器本身,我都会遇到相同的错误。

它必须是我接近解决方案...我尝试了其他脚本,我没有经验足够编辑,他们使用了一个try-catch方法与get-wmiobject然后.delete()命令,并且该脚本工作伟大的...没有权限问题,它删除了像魅力的配置文件...和我的自制脚本具有相同的凭据...所以我真的觉得它不是一个真正的凭据问题,更多的是与缺点我使用remove-item cmdlet的方式。

这是我的脚本......这是我的第一个自制脚本,而不是复制/粘贴脚本,所以请随时指出明显的不良做法......这是脚本,错误将在下面。我编写这个脚本的方法是分别尝试每个单独的命令,然后将它们绑在一起,这可能就是为什么其中一些可能是多余的。

##This process deletes ntuser.dat files and user profile folders


$users = (Read-Host "Enter each user (separate with comma)").split(',') | % {$_.trim()}


foreach ($user in $users) {

$datfile = "ntuser.dat"
$servers = Get-Content C:\servers.txt
$path1 = "\\fileserver\d$\TSEProfiles\$user.DOMAIN"
$path2 = "\\fileserver\d$\TSEProfiles\$user.DOMAIN.V2"


## Checks for ntuser.dat file in specified folders, if true, delete.

## Checking 4 locations on fileserver
If (Test-Path \\fileserver\d$\TSEProfiles\$user.DOMAIN\$datfile){
    Remove-Item $path1\$datfile -recurse -force
    }
if (Test-Path \\fileserver\d$\TSEProfiles\$user.DOMAIN.V2\$datfile){
    Remove-Item $path2\$datfile -recurse -force
    }
If (Test-Path \\fileserver\d$\roamingprofiles\$user.DOMAIN\$datfile){
    Remove-Item $path1\$datfile -recurse -force
    }
If (Test-Path \\fileserver\d$\roamingprofiles\$user.DOMAIN.V2\$datfile){
    Remove-Item $path2\$datfile -recurse -force
    }

## Checking 8 locations, if true, delete. 
foreach ($server in $servers) {

If (Test-Path \\$server\c$\users\$user -PathType Container){
    Remove-Item \\$server\c$\users\$user -recurse -force
            }
        }      
   }




Remove-Item : Access to the path '\\APPS3\c$\users\realdomainuser\AppData\Local\Application Data' is denied.

At C:\Users\admin\Documents\zoink.ps1:35 char:2

+     Remove-Item \\$server\c$\users\$user -recurse -force

+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : PermissionDenied: (\\APPS3\c$\users\realdomainuser:String) [Remove-Item], UnauthorizedAccessException

    + FullyQualifiedErrorId : RemoveItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.RemoveItemCommand



Remove-Item : Access to the path '\\APPS4\c$\users\realdomainuser\AppData\Local\Application Data' is denied.

At C:\Users\admin\Documents\zoink.ps1:35 char:2

+     Remove-Item \\$server\c$\users\$user -recurse -force

+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : PermissionDenied: (\\APPS4\c$\users\realdomainuser:String) [Remove-Item], UnauthorizedAccessException

    + FullyQualifiedErrorId : RemoveItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.RemoveItemCommand

django - 这是运行本地计算机策略脚本后的删除配置文件输出。仍然得到验证错误。

Remove-Item : Access to the path '\\APPS7\c$\users\someuser\AppData\Local\Application Data' is denied.
At C:\Users\admin\Documents\zoink.ps1:35 char:2
+     Remove-Item \\$server\c$\users\$user -recurse -force
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (\\APPS7\c$\users\someuser:String) [Remove-Item], UnauthorizedAccessException
    + FullyQualifiedErrorId : RemoveItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.RemoveItemCommand

2 个答案:

答案 0 :(得分:0)

由于某些Citrix VM的权限没有运行powershell脚本,我曾经遇到过运行脚本的问题,但是我能够运行bat文件,因此我创建了一个包含在bat文件中的PS脚本。

echo "Killing IE"
powershell -Command "stop-process -processname iexplore"

虽然它远不是一个优雅的解决方案,但它很容易实现它的目的。

答案 1 :(得分:-1)

尝试运行此脚本。这是永久设置脚本的本地计算机策略的示例:

# SetExecutionPolicyToRemoteSigned.ps1
Write-Output "Setting local Powershell policy to RemoteSigned"
Write-Output ""
Set-ExecutionPolicy -scope CurrentUser Undefined -Force
#Set-ExecutionPolicy -scope Process Undefined -Force
Set-ExecutionPolicy -scope LocalMachine Undefined -Force
Set-ExecutionPolicy -scope CurrentUser RemoteSigned -Force
#Set-ExecutionPolicy -scope Process RemoteSigned -Force
Set-ExecutionPolicy -scope LocalMachine RemoteSigned -Force
Write-Output "Finished."
Get-ExecutionPolicy -list
Start-Sleep -s 10

将产生以下输出:

PS C:\Users\qa> Get-ExecutionPolicy -list
Scope            ExecutionPolicy
-----            ---------------                                              
MachinePolicy    Undefined
UserPolicy       Undefined
Process          RemoteSigned
CurrentUser      RemoteSigned
LocalMachine     RemoteSigned

然后,你可以在没有策略提示的情况下运行这样的脚本。最重要的是,该策略应该能够在重启系统后继续存在:

# Filename: Hello.ps1
Write-Host
Write-Host 'Hello World!'
Write-Host "Good-bye World! `n"
# end of script

另一个运行脚本的例子:

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile 
    -WindowStyle Hidden -File script_name