Get-ChildItem -File或-Directory在不同的用户上下文中不起作用

时间:2018-02-01 08:48:06

标签: powershell get-childitem

我有一个PowerShell cmdlet,其中包含以下行

$items = Get-ChildItem -Path $FolderName -File -Force |
         Sort CreationTime |
         Select -First 1 -Last 1

在我的正常登录下工作正常但如果我以域管理员身份登录我的计算机,则会收到一条错误消息,告知我-File未被识别为Get-ChildItem的有效参数。

我怀疑域管理员运行的是PowerShell的早期版本,所以在这两个帐户下我运行了$PSVersionTable.PSVersion并获得以下内容:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117

如果有什么我希望我的本地登录失败并且域管理员登录由于权限差异而成功,但它似乎正在以相反的方式工作。

2 个答案:

答案 0 :(得分:0)

Get-ChildItem可能会以某种方式覆盖在您的$个人资料或其他内容中吗?

如果你运行它,你可以检查Get-ChildItem执行的内容:

get-command Get-ChildItem

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-ChildItem                                      3.1.0.0    Microsoft.PowerShell.Management

如果被这样的事情覆盖:

Function Get-ChildItem { }

然后它会显示:

get-command Get-ChildItem

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-ChildItem

如果是这种情况,您可以使用

删除自定义版本
Remove-Item Function:\Get-ChildItem

您也可以尝试不使用-File参数,而是自己过滤掉文件夹:

$items = Get-ChildItem -Path $FolderName -Force | 
    Where PSIsContainer -eq $False |
    Sort CreationTime |
    Select -First 1 -Last 1

答案 1 :(得分:0)

通过确保将PATH和PSModulePath变量设置为包含ps1脚本的位置,可以解决该问题。

在这种特殊情况下,PATH和PSModulePath变量包含第一个用户的脚本位置,但不包括第二个用户的脚本位置。

通过更正此问题,脚本成功运行以进行第二次用户登录。