我有一个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
如果有什么我希望我的本地登录失败并且域管理员登录由于权限差异而成功,但它似乎正在以相反的方式工作。
答案 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变量包含第一个用户的脚本位置,但不包括第二个用户的脚本位置。
通过更正此问题,脚本成功运行以进行第二次用户登录。