我正在使用 Windows Powershell,只是想知道是否有办法滚动屏幕缓冲区(例如在 UNIX bash 中使用 SHIFT + PgUp / SHIFT + PgDn)。我知道有一个“更多”命令用于在屏幕缓冲区中进行分页,但某些键盘快捷键会更舒适。
有没有办法在不使用鼠标的情况下滚动输出?
一位朋友要求我执行以下操作:
“找到按文件名的最后一个字符对目录列表进行排序的最快和最简单的方法。”
他使用以下方法在 Linux 上完成了这项工作:
ls | rev | sort | rev
Run Code Online (Sandbox Code Playgroud)
我想向他展示 powershell 替代方案,但我才刚刚开始学习 powershell,我做不到。所以,我在作弊并寻求你的帮助。
我喜欢将 env 变量 PROMPT 定义为 $p$_$g 以便提示从新行开始。
但似乎不适用于我的 PowerShell 提示:-(
dir function:/ 显示名称“prompt”已经定义。
有什么办法可以在 PowerShell 控制台中自定义我的提示,而不会弄乱已经定义的“提示”名称?
我正在清理一些不再使用的 AD 组。我无法删除的 AD 组之一,因为似乎有成员将此组设置为主要组(我假设有人不小心这样做了)。有没有一种简单的方法可以找出谁将该组设置为主要组?
在访问共享文件夹中使用PowerShell确定用户问题有一个很好的答案。继续您如何断开使用 powershell 脚本访问共享的用户的连接。
有一个名为OpenFiles的 Windows 命令行实用程序,但我更喜欢 PowerShell / WMI 解决方案。
我使用的是 windows server 2008 R2,它不允许我将 powershell 脚本固定到任务栏。任何人都知道我为什么以及如何固定 powershell
出于某种原因,当 ForEach 别名工作正常时,当使用 ( $Thing in $Things) 语法时, ForEach-Object 的 % 别名会引发异常。
这里有两个例子:
使用 % 别名:
$ints = @(1, 2, 3, 4, 5)
% ($i in $ints)
{Write-Host $i}
Run Code Online (Sandbox Code Playgroud)
这将失败并在表达式或语句中出现错误 Unexpected token 'in'。
使用 ForEach 别名:
$ints = @(1, 2, 3, 4, 5)
foreach ($i in $ints)
{Write-Host $i}
Run Code Online (Sandbox Code Playgroud)
这毫无问题地成功。
如果它们都是 ForEach-Object 的别名,为什么会有区别?
我可以像这样在 powershell 中获得登录用户的权限:
whoami /priv
Run Code Online (Sandbox Code Playgroud)
如何为我未登录的用户执行此操作?
我们正在使用TfsDeployer和 PowerShell 脚本来删除Remove-Item
在部署新版本之前使用的文件夹。有时 PS 脚本会失败并显示错误:
删除项目:无法删除项目 Services\bin:该进程无法访问文件 Services\bin',因为它正被另一个进程使用 Get-ChildItem -Path $Destination -Recurse | Remove-Item <<<< -force -recurse + CategoryInfo : WriteError: (C:\Program File..\Services\bin:DirectoryInfo) [Remove-Item], IOExceptionfullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
我试图按照答案(来自:在 PowerShell 中强制删除文件和目录有时会失败,但并非总是如此)通过管道Get-ChildItem -Recurse进入Remove-Item.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Run Code Online (Sandbox Code Playgroud)
但是错误仍然会定期发生。我们正在使用解锁器手动终止锁定应用程序,(通常是 w3wp),但我更喜欢找到自动化的解决方案。
另一个(不理想的)选项是抑制 powershell-errors
Get-ChildItem -Recurse -Force -ErrorAction SilentlyContinue
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议。
我们有一个文档管理系统,它在通过网络共享访问的 NTFS 文件系统上拥有数百万个文件。单个服务帐户需要对所有这些文件和应用程序代理使用此服务帐户进行访问的完全权限。
在数据迁移过程中,发生了一些事情,权限现在不一致。
我一直在尝试在 PowerShell 中编写一个脚本来确定哪些文件没有适当的 ACE,但get-acl有点……痛苦。
我尝试过类似的各种组合:
get-childitem -recurse | get-acl | select -expandproperty access |
where { $_.$_.IdentityReference -notcontains $principal
Run Code Online (Sandbox Code Playgroud)
其中 $Principal 是需要domain\user格式权限的用户。
一定有办法做到这一点,对吧?它是什么?我想保持它原产于PowerShell和不使用icacls或cacls如果可能的话。