我有一台运行 Windows Server 2003 SP2 并安装了 PowerShell 的笔记本电脑。
有时,该系统必须在需要将 NIC 手动设置为 100 Mbps/全双工才能正常运行的环境中使用。在大多数其他环境中,这需要设置为自动检测以获得最佳性能。
通常,我通过以下程序执行此操作:
有没有办法通过 Batch 或 PowerShell 脚本来做到这一点?我正在做这样的事情:
@ECHO OFF
[Insert 100 Mbps/Full Duplex commands here]
ECHO NIC set to 100 Mbps/Full Duplex
ECHO Press any key to return to Auto-Detect
PAUSE
[Insert Auto-Detect commands here]
ECHO NIC returned to Auto-Detect
ECHO Press any key to exit
PAUSE
有人告诉我,可能有一些方法可以通过 WMIC 或 PowerShell 执行此操作,但我一直无法找到正确的开关、值或语法。
我不确定如何在 PowerShell 中执行此操作,但我认为它不受支持。
例如:
$tasks = schtasks /query
Run Code Online (Sandbox Code Playgroud)
将所有任务存储到变量中 $tasks
示例输出:
Folder: \Microsoft\Windows\WindowsBackup
TaskName Next Run Time Status
======================================== ====================== ===============
ConfigNotification Disabled
Run Code Online (Sandbox Code Playgroud)
不能轻易引用属性“TaskName”(即$tasks.TaskName)
是否有其他方法可以引用$tasks变量中的 TaskName 属性,类似于如何引用 get-service cmdlet 中的属性?
$services = gsv
$services | Where-Object { Write-Output $_.Name }
Run Code Online (Sandbox Code Playgroud) 如何在 Powershell 中执行后台任务?
$ ant >/dev/null & #cygwin
Run Code Online (Sandbox Code Playgroud)
我在 Powershell 中最接近这个的是
ps2> start-job {ant |out-null; `a} #powershell
Run Code Online (Sandbox Code Playgroud)
但后来我没有得到实时输出,也没有听到哔哔声。我必须用接收作业轮询它,并在标准输出被轮询时发出哔哔声。
我正在使用 kramdown 将我的 markdown 格式的源文件转换为 html。我一直在使用的命令是:
kramdown %filename | Out-Clipboard
Run Code Online (Sandbox Code Playgroud)
(Out-Clipboard 来自神奇的PSCX。这意味着我格式化的 html 可以立即粘贴到另一个程序或编辑器中)
我很想简化这个过程,并且能够使用上下文菜单项来做同样的事情,而不是每次打开一个 shell 并输入命令。将这些说明传递给 powershell 并将其添加为菜单选项的最佳方法是什么?
我想要这个:
Set-Alias pr php \.fileToExecute
Run Code Online (Sandbox Code Playgroud)
以便它在 PHP 中运行文件(取决于我在执行时所在的位置pr)。
我一直在参考这篇文章的第三个答案来编写我的 PowerShell 脚本,但它似乎不起作用。
$linkPath = Join-Path ([Environment]::GetFolderPath("Desktop")) "My shortcut.lnk"
$targetPath = Join-Path ([Environment]::GetFolderPath("MyDocuments")) "...\run.exe"
$link = (New-Object -ComObject WScript.Shell).CreateShortcut($linkPath)
$link.TargetPath = $targetPath
Run Code Online (Sandbox Code Playgroud)
它只打印输出窗格中的代码,但似乎从未完全执行;桌面上没有显示快捷方式。
这是我从 Windows 7 启动的应用程序的快捷方式目标,该应用程序在 Windows XP 模式下启动程序。
%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\VMCPropertyHandler.dll,LaunchVMSal "Windows XP Mode" "||fc9407e9" "wIntegrate"
Run Code Online (Sandbox Code Playgroud)
我似乎无法让 PS Start-process 命令为该目标工作。
我使用的代码:
Start-Process %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\VMCPropertyHandler.dll,LaunchVMSal "Windows XP Mode" "||fc9407e9" "wIntegrate"
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
Start-Process : A positional parameter cannot be found that accepts argument 'Windows XP Mode'.
At C:\Users\username.domain\Desktop\rebootpick.ps1:13 char:14
+ Start-Process <<<< %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\VMCPropertyHandler.dll,LaunchVMSal "Windows XP Mode" "||fc9407e9" "wIntegrate"
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
Run Code Online (Sandbox Code Playgroud)
有没有人有幸从 Windows 7 的 Powershell 执行 Windows XP Mode 应用程序?
我正在尝试rd /S在非空目录上执行,有时它工作正常,有时它报告“目录不为空”。为什么我收到这个错误?有没有一种可靠的方法可以删除 Windows 下充满文件和子目录的文件夹?PowerShellRemove-Item也存在这个问题。
我正在学习 Powershell,并一直在尝试编写一个脚本,将我的驱动器自动映射到特定的网络驱动器。这很容易,但我还希望从 Windows 资源管理器中获得与它们相关联的某些名称。这可以从注册表中完成,但我不知道如何从 Powershell 中完成。我在网上进行了研究,现在我可以使用 gci 和 set-location/cd 像普通驱动器一样在注册表中导航到某个点,但是一旦我到达最后一个文件夹键,我就看不到键中的 DWORD 使用gci了。从regedit,我知道里面有一堆钥匙。我的路径是 HKCU:\software\microsoft\windows\currentversion\explorer\mountpoints2##ComputerName#DriveName
在PowerShell中,foreach并且%是默认的别名ForEach-Object。但是,该命令的行为似乎取决于它的调用方式。
特别是,除非我专门使用foreach别名,否则我很难在不从管道中提供输入的情况下让命令工作。

我在这里做错了什么,还是出于某种原因设计的?
powershell ×10
command-line ×2
batch ×1
context-menu ×1
desktop ×1
properties ×1
script ×1
shortcuts ×1
windows ×1
windows-7 ×1