[英]Using PowerShell to grant access to a folder for an “IIS AppPool”
我編寫了一個腳本來自動部署我的平台,但我不知道如何設置應用程序池以使用我在它下面的代碼獲得權限,只需在下面插入帶有應用程序池名稱的文本。 我認為這是因為這是一個友好的名稱,當您通常單擊檢查名稱時,它會獲取正確的用戶,但我不知道在 powershell 中這樣做很熱。
function Set_iis_perms {
param (
[parameter(position=0)]
$AppPoolName,
[parameter(position=1)]
$FileName
)
$acl = Get-Acl $FileName
$acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule(("iis apppool\$Apppool_Name"),"Modify","Allow")))
$acl | Set-Acl $FileName
}
即使有人能指出我正確的方向,我也會非常感激。
親切的問候多姆
通過 Get/Set-ACL 和 icacls 設置 ACL 是一件非常常見的事情,並且在許多資源中都有介紹。 例子):
此腳本將設置文件夾(c:\1 和 C:2)及其子文件夾的文件夾權限。 如果文件夾不存在,它將創建文件夾,設置為共享並將組添加到文件夾中。 Group_Name 必須替換為實際組。
根據這個 StackOverflow Q&A
Set-Acl $directory $acl $user = New-Object
System.Security.Principal.NTAccount("$domain\\$username")
更新:似乎它不會接受“IIS APPPOOL\AppPoolName”作為 NTAccount 標識符。 現在,有兩種方法可以完成您正在嘗試做的事情:
Create a new SID object with the AppPoolIdentities SID and translate it into an NTAccount, like this: http://iformattable.blogspot.com/2007/12/convert-sid-to-ntaccount-with.html , and you should be able像對待任何其他 NTAccount object 一樣對待它。 如果您仍然希望能夠為真實帳戶傳遞域/用戶名,則內置一些簡單的邏輯,如果用戶名是“AweSomeAppPool”並且域為空,則默認為 AppPool SID,僅作為示例。
使用 PowerShell 調用 icacls.exe,並使用它來授予/撤銷您想要的任何權限,如下所示(首先是正常的 icacls 表單命令提示符,然后是 powershell,注意區別):
icacls.exe test.txt /grant "IIS AppPool\DefaultAppPool":(OI)(CI)M
cmd /c icacls test.txt /grant "IIS AppPool\DefaultAppPool:(OI)(CI)M"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.