2017-02-23 29 views
0

此代碼運行如下:PowerShell代碼時粘貼到正在以管理員身份運行PowerShell窗口運行在窗口中的確定,但不能從名爲.ps1文件

$directory = "C:\Program Files (x86)\CAREWare" 
$domainName = "DHS" 
$group = 'Domain Users' 
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit" 
$propagation = [system.security.accesscontrol.PropagationFlags]"None" 
$acl = (Get-Item $directory).GetAccessControl("Access") 
$user = "{0}\{1}" -f "$domainName", $group 
$user.trim() 
$access = "FullControl" 
$accessType = "Allow" 
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule -ArgumentList @("$user","$access", "$inherit", "$propagation", "$accessType") 
$acl.SetAccessRule($accessRule) 
set-acl $directory $acl 

但是,試圖運行裏面上面的代碼時。 ps1文件(沒有其他代碼),我得到權限錯誤或目錄位置錯誤。 .ps1文件與運行它的.ps1文件位於相同的位置。

這裏是行不通:

$script4 = "D:\PowerShell\AllUsersTotalControlCAREWareFolder.ps1" 
Start-Process powershell -WorkingDirectory (Split-Path $script4) -Credential dhs\jdavis_desktop -ArgumentList '-noprofile', '-command', "start-process '$script4' -verb runas" 

我想給一個文件夾,我是在這個過程中先前創建的完全控制。

編輯: 我只是再次運行腳本,我沒有得到任何錯誤,但沒有更改權限。 它只是輕鬆通過代碼的那部分。

+0

愚蠢的問題,但是....你運行PS1文件作爲管理員? – asemprini87

+0

-Credential dhs \ jdavis_desktop是管理員憑證,它要求輸入密碼,但表示我沒有權限 – JustJohn

+0

您是否嘗試在外部啓動過程中放置​​-verb RunAs? – TessellatingHeckler

回答

0

我終於名爲.ps1文件運行的.ps1文件:

$script4 = "D:\PowerShell\AllUsersTotalControlCAREWareFolder.ps1" 
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$script4`"" -Verb RunAs} 
相關問題