PowerShell

用 Hyper-V 给 Windows 添加虚拟网卡

Hyper-V 宿主机可以有自己的虚拟网卡,用来直连物理交换机上的某个 VLAN。场景是:物理交换机端口做了 Trunk,承载多个 VLAN,但宿主机只需要接入其中一个。

先决条件:Windows 开启了 Hyper-V 功能(Win+R 输入 optionalfeatures,勾选 Hyper-V)。

创建虚拟交换机

用管理员身份打开 PowerShell,执行:

New-VMSwitch -Name "vTrunk" -NetAdapterName "以太网" -AllowManagementOS $false
  • -Name:虚拟交换机名称,随意起,后面引用要用
  • -NetAdapterName:绑定的物理网卡名,在控制面板里能看到
  • -AllowManagementOS $false:宿主机不通过这个交换机走管理网络,避免路由冲突

这一步只是建立了虚拟交换机和物理网卡的连接,宿主机自己还没有接口可以通信。

给宿主机加虚拟网卡

上一步创建的交换机默认只服务虚拟机,宿主机要接入,需要单独加一块虚拟网卡:

Add-VMNetworkAdapter -ManagementOS -SwitchName vTrunk

-ManagementOS 表示这块网卡属于宿主机(管理操作系统),而不是某台虚拟机。加完之后打开网络适配器设置,会看到一个新的虚拟网卡。

但到这里还不够——这块网卡默认会收到 Trunk 口上所有 VLAN 的流量,需要告诉它只认其中一个。

通过powershell查看谁重启了服务器

通过powershell可以很方便的查询谁重启过服务器,对于Server Core尤其方便。服务器重启的事件ID为1074.查询命令为

Get-WinEvent -LogName system | Where-Object ID -eq 1074

删除Windows用户Profile

Get-WMIObject -class Win32_UserProfile | Where {!$_.Special -and !$_.Loaded } | Remove-WmiObject

Powershell只输出值

经常需要把运行powershell的结果保存到文本文档中,可是每次都会保存标题头,跟我想要的不一样。目前找到两种方法:

一种是使用format table

PS C:\Users\user>Get-CimInstance Win32_BIOS | select SerialNumber | ft -HideTableHeaders

9553-8062-1090-9335-3297-8274-10

但是中间会有一行空行,用foreach则没有