使用automation.runspaces命名空间我造成了很大的问题。我是一名学生,我在一所大学工作。我正在使用大学计算机和大学领域。长话短说,放弃使用运行空间,我只是在C#中打开PowerShell并执行脚本。这没有奏效,所以我写了一些cmd脚本。这里是工作的例子:
PowerShell脚本:
重命名MAC地址
$OS = Get-WmiObject Win32_OperatingSystem
$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq “TRUE”}
$PC = Get-WmiObject -class Win32_ComputerSystem
if($NIC.MacAddress -eq $null)
{
Write-Host "No Network Connection! The PC will not be renamed until the network is enabled"
}
else
{
$MacAddress = $NIC.MacAddress
$NewPCName = "PC-" + $MacAddress.Substring(0) -replace ':'
$PC.Rename($NewPCName)
Write-Host -ForegroundColor Green "New PC Name"
$NewPCName
}
write-Host "The PC has been renamed and will restart in 5 seconds."
start-sleep -s 5
restart-computer
如果我运行上面的脚本在PowerShell中它的工作原理。如果我使用Process.Start(powershell.exe,“C:\ myscript”);在C#中它不会运行。即使设置执行策略也无济于事。所以我用一个CMD脚本如下:
CMD脚本:
PowerShell的-noexit -ExecutionPolicy不受限制的 “C:\ myscript.ps1”
并执行。
现在我有以下几点:
PowerShell脚本:
的Set-ItemProperty “HKLM:\ SOFTWARE \微软\的Windows NT \ CURRENTVERSION \ Winlogon中” -name AutoAdminLogon - 值0 写 - 主机“更改注册表” 启动睡眠-s 10
CMD脚本:
PowerShell的-noexit -ExecutionPolicy不受限制的 “C:\ WINDOWS \ ITS \ ChangeRegistry.ps1”
在我的Windows窗体程序中我有一个按钮单击事件调用cmd脚本。它看起来像它的工作,没有崩溃,cmd执行,因为它应该写入主机,它睡了10秒。但注册表项从不改变。但我的PowerShell重命名脚本和cmd的第一个例子完全适用于单击窗体上的按钮。所以我只是不明白。
来源
2012-07-28 21:41:24
Jon