我有一台笔记本电脑,它通过播放小 ba-dum 声音定期通知我安装/删除了某些硬件。我不知道什么硬件正在改变 - 我没有添加或删除任何设备。是否有一个软件或者一个 PowerShell 脚本我可以运行它挂钩到 WMI 或任何类似的事件实际上会触发要播放的声音并获取有关哪些设备正在从我的系统中出现或消失的更多信息?我很想知道是什么导致了这种情况,以便我可以更换/重新配置/淘汰这件硬件。
更新 1:硬件是 HP 8760w 笔记本电脑,带底座。当停靠时,这个问题肯定会更加明显。
更新 2:我打开设备管理器并将查看菜单选项切换为按连接设备,并展开树的每个元素。通过一些淘汰的过程,只是看着它,我把它缩小到下图所示的元素。有一个“通用 USB 集线器”附加到可能与指纹读取器相关的内容上。因为我不需要指纹读取器,也不需要任何连接到 EHCI 控制器 1C2D 的 USB 集线器 - 我现在只是在设备管理器中禁用了它。我可能会查看是否可以在 BIOS 中禁用指纹读取器。

更新 3:我想仍然保持打开状态,因为没有通过软件/脚本/PowerShell/WMI 来“检测硬件更改”的答案。人类解析器只有在有限的时间才能如此准确:)
有没有办法在不禁用 FastBoot 的情况下使用 Windows 8 在关机时执行批处理或 PowerShell 脚本?
我知道您可以使用“gpedit.msc”添加脚本,但我发现只要启用了 FastBoot,Windows 8 就不会执行关机脚本。
必须在企业中部署脚本,我不想在脚本末尾添加关闭命令并告诉数十人通过脚本关闭 PC。
如何使用powershell创建日志文件?
我正在使用此代码创建日志文件。
# Log file time stamp:
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"
# Log file name:
$LogFile = 'C:\PSLogs\'+"LOG_"+$LogTime+".log"
if(---)
{
----
----
"done" | Out-File $LogFile -Append -Force
}
else
{
"Unlucky!!" | Out-File $LogFile -Append -Force
}
Run Code Online (Sandbox Code Playgroud)
但它向我展示了一个错误
Out-File : 找不到路径的一部分
我正在尝试使用 Powershell 列出我的一些 mp3 文件。
我试过了
ls C:\test | Format-List -Property Name,Length
Run Code Online (Sandbox Code Playgroud)
这给了我
Name : testfile.mp3
Length : 10058533
Run Code Online (Sandbox Code Playgroud)
长度是我目前不关心的文件大小。
知道我可以在文件资源管理器中为列标题选择持续时间,我想将上面的内容重写为
ls C:\test | Format-List -Property Name,Duration
Run Code Online (Sandbox Code Playgroud)
但我得到的是
Name : testfile.mp3
Run Code Online (Sandbox Code Playgroud)
如何告诉 Powershell 返回持续时间的分钟和秒?或者甚至只是几秒钟。提前致谢
我正在尝试在 PowerShell 中将位置设置为映射的网络驱动器 Z,但它不起作用。
我有以下驱动器号:C、D、E、Z。其中前三个只是本地磁盘,Z 当然是映射到字母 Z 的网络位置。
我可以从C切换到D,再到E,再回到C,但出于上帝的爱,我不能出于某种原因切换到Z字母。但是我可以切换到那个位置,但是我必须输入网络位置而不是使用驱动器号。
PS C:\Windows\system32> D:
PS D:\> C:
PS C:\Windows\system32> Z:
Set-Location : Cannot find drive. A drive with the name 'Z' does not exist.
At line:1 char:13
+ Set-Location <<<< Z:
+ CategoryInfo : ObjectNotFound: (Z:String) [Set-Location], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
PS C:\Windows\system32> Set-Location \\fileserver\karta
PS Microsoft.PowerShell.Core\FileSystem::\\fileserver\karta> C:
PS C:\Windows\system32> Z:
Set-Location : Cannot find drive. A drive with the name 'Z' does not exist.
At line:1 char:13
+ Set-Location <<<< …Run Code Online (Sandbox Code Playgroud) 我想查找并复制某个目录中的所有文件及其所有具有特定名称的子目录。
我Copy-Item在 Powershell 中使用(technet | ss64)
这是我所拥有的:
Copy-Item `
-Path \\Server\Apps\* `
-Destination C:\ReadMeFiles\ `
-Include *ReadMe.txt `
-Recurse `
-WhatIf
Run Code Online (Sandbox Code Playgroud)
它将抓取以下文件:
\\Server\Apps\ReadMe.txt
Run Code Online (Sandbox Code Playgroud)
但不是:
\\Server\Apps\AppName\ReadMe.txt
Run Code Online (Sandbox Code Playgroud)
即使我已经指定 -recurse
我怎样才能让它在每个目录中向下移动?
我见过类似的工具CLIP,但它适用于剪贴板,而不是另一个方向。
我看到过对“粘贴”的引用,但这似乎不是 Windows 的一部分。我需要找到适用于标准 Windows 7、8 和 10 环境的解决方案。
Clip是分布式的。有人有可以从剪贴板到文件的工具吗?
似乎可以使用 PowerShell 命令来完成。
我刚刚编写的这个 C# 程序执行了我使用 PowerShell 执行的操作:
class Clip2File
{
[STAThread()]
static void Main(string[] args)
{
var fileName = @"c:\demo.png";
if (args.Length != 0){
fileName = args[0];
}
if (!Clipboard.ContainsImage()) return;
Image img = Clipboard.GetImage();
img?.Save(fileName, ImageFormat.Png);
}
}
Run Code Online (Sandbox Code Playgroud) 我更改了许多 powershell 策略,例如运行脚本的执行策略。有没有办法让一切恢复到安装操作系统时的默认设置?
这确实是一个烦人的错误 -尝试对“文件系统”提供程序执行 InitializeDefaultDrives 操作失败。,每次我在公司网络之外启动 powershell 时都会得到它。
我在域中有一个笔记本。我有两种使用它的方法。首先是公司网络内部,一切正常。第二种方式是当我在办公室外面时,通过 VPN 连接。每次启动 powershell 时都会产生上述错误。
根据我对错误的重新搜索,原因似乎是无法连接的驱动器或资源。
我试图找出可能的原因。由于主文件夹结构发生了一些变化,我对此表示怀疑。
我已经在两个位置执行了这个脚本:
Write-Verbose -Message 'Get-PSDrive -PSProvider FileSystem' -verbose
echo 'Get-PSDrive -PSProvider FileSystem' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Get-PSDrive -PSProvider FileSystem | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Write-Verbose -Message 'net use' -verbose
echo 'net use' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
net use | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Write-Verbose -Message '[System.IO.DriveInfo]::GetDrives() | Format-Table' -verbose
echo '[System.IO.DriveInfo]::GetDrives() | Format-Table' …Run Code Online (Sandbox Code Playgroud) windows-registry windows-7 powershell network-shares roaming-profiles
运行 cmdlet 时,输出略有不同,我只是想了解这两个 cmdlet 之间的区别以及为什么要使用其中一个而不是另一个。
例子:
Get-Date | Select -Property DayOfWeek
Run Code Online (Sandbox Code Playgroud)
输出:
DayOfWeek
---------
Saturday
Run Code Online (Sandbox Code Playgroud)
Get-Date | Select -ExpandProperty DayOfWeek
Saturday
Run Code Online (Sandbox Code Playgroud) powershell ×10
windows-7 ×3
command-line ×2
windows ×2
batch-file ×1
clipboard ×1
drivers ×1
logging ×1
mp3 ×1
networking ×1
shutdown ×1
windows-8 ×1
wmi ×1