簡體   English   中英

使用 PowerShell 授予對“IIS AppPool”文件夾的訪問權限

[英]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 是一件非常常見的事情,並且在許多資源中都有介紹。 例子):

使用 PowerShell 在文件夾或文件上設置 ACL

此腳本將設置文件夾(c:\1 和 C:2)及其子文件夾的文件夾權限。 如果文件夾不存在,它將創建文件夾,設置為共享並將組添加到文件夾中。 Group_Name 必須替換為實際組。

應用程序池標識

使用 PowerShell 在 IIS 上設置 ASP.NET 應用程序的權限

根據這個 StackOverflow Q&A

如何通過 Powershell 為 IIS APPPOOL* 帳戶添加 ACL 權限?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM