0

ファイルのリストのアクセス許可を(再帰的に)変更しようとしています:

$global:unc = "\\.\"   # unc-format
$files = Get-ChildItem c:\Users\loli\test\ -Filter *.txt -Recurse -Force |
         % { $_.FullName }
$username = Read-Host

giveAccess $files $username

function giveAccess ( $files, $username ) {
    foreach ( $file in $files) {
        icacls ($unc+$dat) /grant $username:F
    }
}

残念ながら、次のエラーが表示されます。

icacls : Ungültiger パラメータ: "/grant"
インツァイレ:9 ツァイヘン:13
+ icacls ($unc+$dat) /grant $username:F
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (Ungültiger Parameter: "/grant":String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

どうやら の文字列について不平を言って$usernameいるようですが、どうすれば変更できるのかわかりません。

4

1 に答える 1

4

$username:F他の PowerShell 構文と競合しています。名前にコロンが含まれる変数には、すでに意味があります。これは特定の PSProvider またはスコープです。たとえば$variable:PSHome、環境変数、$global:myCounterグローバル スコープ変数です。

$username:Fは 1 つの変数名であり、設定されていないため、評価され$nullて icacls が文句を言います。

どういうわけか2つのことをバラバラにして回避してください:

icacls foo.txt /grant "$($username):F"

icacls foo.txt /grant $username":F"

icacls foo.txt /grant ($username + ":F")
于 2016-06-17T23:35:36.190 に答える