标签: powershell

如何知道哪些进程正在使用指定的文件

当我尝试删除它时,系统会报错。我当然知道该命令Stop-Process可以帮助我终止该进程。但我不知道哪些进程正在使用它。谁能告诉我如何找到正在使用指定文件的进程?

PS:这是我的powershell版本:

powershell

6
推荐指数
1
解决办法
2万
查看次数

如何在不关闭实际 PowerShell 的情况下提升 PowerShell?

这种情况经常发生,涉及尝试运行“rm -r”等命令或类似的命令,并且您意识到您没有在该 PowerShell 窗口上提升到管理员权限。

通常,您必须打开开始菜单,选择 PowerShell 图标,然后右键单击它以选择“以管理员身份运行”。

我如何避免所有这些步骤?

windows uac powershell administrator command-line

6
推荐指数
1
解决办法
4万
查看次数

powershell ps中的SI值是多少?

我正在尝试使用 powershell ps 查找进程执行信息。有一个属性“SI”,其值通常类似于 0、2、10 等。具体来说,我在 powershell 中输入以下内容:

    PS C:\Users\> ps -pid 10860

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName                                                  
-------  ------    -----      -----     ------     --  -- -----------                                                  
    175      12    23068      12276       0.20  10860   2 geckodriver
Run Code Online (Sandbox Code Playgroud)

谢谢!没有代码。
我找不到此 SI 属性的文档。有人可以帮忙吗?谢谢

powershell ps windows-10

6
推荐指数
1
解决办法
6666
查看次数

将数据从一个 NTFS 驱动器移动到另一个 NTFS 驱动器时保留所有时间戳

我想将包含许多子文件夹和文件 xe2\x80\x94 的文件夹 \xe2\x80\x94 从一个 NTFS 驱动器移动到另一个 NTFS 驱动器,但我需要从新目标驱动器上的原始源保留元数据日期和时间戳属性值。

\n\n

问题:我注意到,当我完成任务的各种复制操作时,“创建日期”、“上次修改日期”等的时间戳值不会保留在至少包含一个文件夹/文件的文件夹中。我还注意到,移动的空文件夹最终会自动更改其创建日期,以与其余文件夹以及在新驱动器上的空文件夹中放置某些内容时保持一致。

\n\n

在此输入图像描述

\n\n

我的努力:我已经尝试了几乎所有可以通过 Google 找到的关于此主题的内容(Robocopy、Richcopy、Microsoft SyncToy、Total Commander、Free Commander...以及很多很多...)\xe2\x80\x94all产生相对相同的结果。没有任何东西能够对被移动的源进行全面、100% 的保存。Robocopy 和 Richcopy(以及“Commanders”)很接近,但我仍然遇到问题(在所有情况下),即创建日期被错误地“保留”,最后修改的日期根本无法保留,等等。唯一真正的承诺我还看到了除此之外的……Powershell。

\n\n
\n\n

我的 PowerShell 之旅

\n\n

我偶然发现了这个链接:

\n\n

/sf/ask/2446633801/

\n\n

...使用这个脚本:

\n\n
function Move-FileWithTimestamp {\n[cmdletbinding()]\nparam(\n[Parameter(Mandatory=$true,Position=0)][string]$Path,\n[Parameter(Mandatory=$true,Position=1)][string]$Destination\n)\n\n$origLastAccessTime = ( Get-Item $Path ).LastAccessTime\n$fileName = ( Get-Item $Path ).Name\nMove-Item -Path $Path -Destination $Destination\n$(Get-Item ($Destination+\'\\\'+$fileName)).LastAccessTime = \n$origLastAccessTime\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面线程中的脚本仍然没有与我列出的程序执行任何不同,但至少在这里,我有一个平台,我可以在其中更改/自定义/调整一些东西以满足我的确切需求。因此,我用我在这个领域有限的知识做了我能做的(即用“.CreationTime”更改“.LastAccessTime”,用“LastWriteTime”交换“.LastAccessTime”等),并最终相对接近保留所有时间戳(我相信在某一时刻,我已将上次修改、上次访问和上次保存保存在我的测试文件夹中)。但是,我似乎仍然无法正确保留创建日期,并且我能够用其他所有内容完成的工作显然仅适用于单独的测试文件夹(没有其他内容,例如其中的子文件夹......但这就是只是因为我不知道如何在主目录之外编写这些内容的脚本)。

\n\n

当谈到这个问题时,我感到很困惑,所以我想知道是否有人想解决这个问题。

\n\n

更新:这就是我现在所在的位置:

\n\n
function Move-FileWithTimestamp {\n[cmdletbinding()]\nparam(\n[Parameter(Mandatory=$true,Position=0)][string]$Path,\n[Parameter(Mandatory=$true,Position=1)][string]$Destination\n)\n$origCreationTime = ( Get-Item $Path ).CreationTime\n$origLastWriteTime = ( Get-Item $Path ).LastWriteTime\n$origLastAccessTime = ( Get-Item $Path …
Run Code Online (Sandbox Code Playgroud)

powershell file-transfer

6
推荐指数
1
解决办法
1万
查看次数

Powershell - 数组全部在一行上

我是 Powershell 新手,所以了解不多。

我有一个菜单,有 2 个选项(“添加 IP”和“列出 IP”)

“添加IP”代码是:

$UIP = Read-Host "Enter IP to whitelist"
$whitelist += $UIP
Run Code Online (Sandbox Code Playgroud)

“列表IP”代码是:

Write-Host "==== $Title Whitelist IPs ===="
Write-Host
Write-Host $whitelist
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,当我列出数组时,它会在同一行上列出所有内容,如下所示:

192.168.0.1192.168.0.2
Run Code Online (Sandbox Code Playgroud)

当我想像这样显示时:

192.168.0.1
192.168.0.2
Run Code Online (Sandbox Code Playgroud)

powershell

6
推荐指数
3
解决办法
2万
查看次数

Windows 上与 strace 等效的命令行是什么?

我需要| findstr SomePATH搜索程序是否访问并立即关闭特定路径。在 Linux 上,我会使用myprogram | strace 2>&1 | grep SomPATH.

\n\n

但是 Windows\xe2\x80\xaf 上的\xe2\x80\x99 相当于什么?

\n

windows powershell 64-bit command-line strace

6
推荐指数
0
解决办法
9049
查看次数

Powershell 错误:“System.Net.ServicePointManager”的类型初始值设定项引发异常

每当我尝试打开 Powershell 时,它就是打不开。当我尝试从 cmd 打开它时,出现以下错误:

外壳无法启动。初始化期间发生故障:“System.Net.ServicePointManager”的类型初始值设定项引发异常。

我尝试过的事情:

  • 以管理员身份打开
  • sfc /scannow 没有显示错误

如果有任何帮助的话,32 位版本的 powershell 出于某种原因仍然可以工作。

windows powershell windows-10

6
推荐指数
1
解决办法
1万
查看次数

WSL/Powershell 未显示已安装的字体

我已经通过以下存储库中的 powershell 脚本使用 powershell 安装了许多字体: https: //github.com/powerline/fonts

不幸的是,当我右键单击 WSL 或 Powershell 窗口并选择属性时,字体选择器中似乎只有少数新安装的字体出现。

我可以确认我实际上已经安装了所有这些字体(它们出现在 Windows 中的字体设置下),并且我重新启动了系统但无济于事......

奇怪的是,大约一周前,我能够在运行 Windows 10 的笔记本电脑上安装同一组字体。我现在在全新安装的 Windows 10 上执行完全相同的操作,但它似乎不起作用。

fonts powershell windows-10 windows-subsystem-for-linux

6
推荐指数
1
解决办法
2455
查看次数

如何通过 powershell / cmd 更改 Windows 上的文件权限?

我想通过 PowerShell 或 cmd 在 Windows 端实现等效的权限方面,但是我找不到正确执行此操作的解决方案。如果有人可以帮助我以正确的方式实现这一目标。

[sudo] adduser test
[sudo] gcc vuln.c -o vuln -fno-stack-protector -m32 -z execstack
Run Code Online (Sandbox Code Playgroud)

我在使其成为 Windows 风格时遇到问题

[sudo] chown root:test vuln
[sudo] chmod 550 vuln
[sudo] chmod u+s vuln

-r-sr-x--- 1 root test 7392 Dec 22 00:27 vuln
Run Code Online (Sandbox Code Playgroud)

windows powershell permissions acl cmd.exe

6
推荐指数
1
解决办法
5万
查看次数

如何使用 Windows powershell 禁用 Hyper-V?

我知道这方面有很多问题,但在阅读并尝试了一些解决方案后,我似乎无法更好地解决/理解我的问题。

我正在尝试运行 VMware 工作站,但在设置时出现错误:Hyper-v 或设备/凭据防护已启用。打开 powershell 并运行 systeminfo 后,已检测到虚拟机管理程序。

我尝试禁用此功能的第一个解决方案是使用控制面板并打开或关闭 Windows 功能。只是当我打开它时,我没有得到我期望的选项。我读到的帖子:https://support.microsoft.com/en-gb/help/3204980/virtualization-applications-do-not-work-together-with-hyper-v-device-g说会有一个可扩展的hyper-v 文件夹。在我的面板上没有这样的文件夹,我只有一个不可扩展的文件夹,标题为:windows hyperverisor platform,未选中

在此输入图像描述

然后我尝试以管理员身份运行 powershell 并使用以下命令:Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

但这导致了以下错误:Disable-WindowsOptionalFeature : Feature name Microsoft-Hyper-V-All is unknown.

然后我读了另一篇关于仍然有 Hyper-V 类型的网络适配器的文章,但我是新摆弄操作系统等的新手,我无法理解/遵循该方法。

任何帮助将非常感激。

干杯

powershell virtualization hyper-v windows-10

6
推荐指数
1
解决办法
3987
查看次数