Get-ACL 使用调用命令返回空值
Get-ACL Returning Null Values with Invoke-Command
所以我这里有一个脚本,用于远程获取目录中所有文件的列表以及一些基本信息。
$a为计算机名,$b
为文件路径,$d
为输出文件名(预设),$e
为输出类型
$script = (invoke-command -ComputerName $a -Credential $cred -ScriptBlock {param($path) get-childitem -Force -literalpath $path} -ArgumentList $b)
switch ($e)
{
json
{
$script | select Name,CreationTime,LastWriteTime,Length,Mode, @{n="Owner";e={(Get-Acl -LiteralPath $_.fullname).owner}} | ConvertTo-Json -Compress | Out-File $outputfilepath\"$d".json
}
csv
{
$script | select Name,CreationTime,LastWriteTime,Length,Mode, @{n="Owner";e={(Get-Acl -LiteralPath $_.fullname).owner}} | ConvertTo-Csv | Out-File $outputfilepath\"$d".csv
}
}
我的问题是 Get-ACL 返回的 "Owner" 属性 总是返回 null 或“builtin\administrators
”,而不是实际所有者。当我在我的本地机器上 运行 完全相同的命令(减去所有的绒毛)时,它 returns 正确的用户作为所有文件的所有者。但是,一旦我使用该脚本 运行 它针对远程对象,所有权数据就不再正确了。
我使用的凭据不应该有任何权限问题,所以我很困惑为什么我没有提取正确的数据。
我能够通过编辑我的 Invoke-Command 来解决这个问题,如下所示,将 Select 语句和 Get-ACL 移动到块本身
$script = (invoke-command -ComputerName $a -Credential $cred -ScriptBlock {param($path) Get-ChildItem -Force -LiteralPath $path | select Name, CreationTime, LastWriteTime, Length, Mode, @{Label=”Owner”; Expression={(Get-ACL ($path+$_.Name)).Owner}} } -ArgumentList $b)
然后我转换成
$script | ConvertTo-Json -Compress | Out-File $outputfilepath\"$d".json
所以我这里有一个脚本,用于远程获取目录中所有文件的列表以及一些基本信息。
$a为计算机名,$b
为文件路径,$d
为输出文件名(预设),$e
为输出类型
$script = (invoke-command -ComputerName $a -Credential $cred -ScriptBlock {param($path) get-childitem -Force -literalpath $path} -ArgumentList $b)
switch ($e)
{
json
{
$script | select Name,CreationTime,LastWriteTime,Length,Mode, @{n="Owner";e={(Get-Acl -LiteralPath $_.fullname).owner}} | ConvertTo-Json -Compress | Out-File $outputfilepath\"$d".json
}
csv
{
$script | select Name,CreationTime,LastWriteTime,Length,Mode, @{n="Owner";e={(Get-Acl -LiteralPath $_.fullname).owner}} | ConvertTo-Csv | Out-File $outputfilepath\"$d".csv
}
}
我的问题是 Get-ACL 返回的 "Owner" 属性 总是返回 null 或“builtin\administrators
”,而不是实际所有者。当我在我的本地机器上 运行 完全相同的命令(减去所有的绒毛)时,它 returns 正确的用户作为所有文件的所有者。但是,一旦我使用该脚本 运行 它针对远程对象,所有权数据就不再正确了。
我使用的凭据不应该有任何权限问题,所以我很困惑为什么我没有提取正确的数据。
我能够通过编辑我的 Invoke-Command 来解决这个问题,如下所示,将 Select 语句和 Get-ACL 移动到块本身
$script = (invoke-command -ComputerName $a -Credential $cred -ScriptBlock {param($path) Get-ChildItem -Force -LiteralPath $path | select Name, CreationTime, LastWriteTime, Length, Mode, @{Label=”Owner”; Expression={(Get-ACL ($path+$_.Name)).Owner}} } -ArgumentList $b)
然后我转换成
$script | ConvertTo-Json -Compress | Out-File $outputfilepath\"$d".json