GVKun编程网logo

Windows Powershell创建对象(powershell创建文件命令)

2

关于WindowsPowershell创建对象和powershell创建文件命令的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AdDuplex:Windows1021H1和Windows

关于Windows Powershell创建对象powershell创建文件命令的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计、Microsoft 暂时禁用某些 Windows 11 PC 的 Windows 更新估等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Windows Powershell创建对象(powershell创建文件命令)

Windows Powershell创建对象(powershell创建文件命令)

通过New-Object创建新对象

如果使用构造函数创建一个指定类型的实例对象,该类型必须至少包含一个签名相匹配的构造函数。例如可以通过字符和数字创建一个包含指定个数字符的字符串:

复制代码 代码如下:

PS C:Powershell> New-Object String(‘*'',100)

*******************************************************************************
*********************

为什么支持上面的方法,原因是String类中包含一个Void .ctor(Char, Int32) 构造函数

复制代码 代码如下:

PS C:Powershell> [String].GetConstructors() | foreach {$_.tostring()}
Void .ctor(Char*)
Void .ctor(Char*, Int32, Int32)
Void .ctor(SByte*)
Void .ctor(SByte*, Int32, Int32)
Void .ctor(SByte*, Int32, Int32, System.Text.Encoding)
Void .ctor(Char[], Int32, Int32)
Void .ctor(Char[])
Void .ctor(Char, Int32)

通过类型转换创建对象

通过类型转换可以替代New-Object

复制代码 代码如下:

PS C:Powershell> $date="1999-9-1 10:23:44"
PS C:Powershell> $date.GetType().fullName
System.String
PS C:Powershell> $date
1999-9-1 10:23:44
PS C:Powershell> [DateTime]$date="1999-9-1 10:23:44"
PS C:Powershell> $date.GetType().FullName
System.DateTime
PS C:Powershell> $date

1999年9月1日 10:23:44

如果条件允许,也可以直接将对象转换成数组

复制代码 代码如下:

PS C:Powershell> [char[]]"mossfly.com"
m
o
s
s
f
l
y
.
c
o
m
PS C:Powershell> [int[]][char[]]"mossfly.com"
109
111
115
115
102
108
121
46
99
111
109

加载程序集

自定义一个简单的C#类库编译为Test.dll:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;

namespace Test
{
    public class Student
    {
        public string Name { set; get; }
        public int Age { set; get; }
        public Student(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
        public override string  ToString()
        {
            return string.Format("Name={0};Age={1}", this.Name,this.Age);
        }
    }
}

在Powershell中加载这个dll并使用其中的Student类的构造函数生成一个实例,最后调用ToString()方法。

复制代码 代码如下:

PS C:Powershell> ls .Test.dll

    目录: C:Powershell

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         2012/1/13     10:49       4608 Test.dll

PS C:Powershell> $TestDLL=ls .Test.dll
PS C:Powershell> [reflection.assembly]::LoadFile($TestDLL.FullName)

GAC    Version        Location
---    -------        --------
False  v2.0.50727     C:PowershellTest.dll

PS C:Powershell> $stu=New-Object Test.Student(''Mosser'',22)
PS C:Powershell> $stu

Name                                                                        Age
----                                                                        ---
Mosser                                                                       22

PS C:Powershell> $stu.ToString()
Name=Mosser;Age=22

使用COM对象

作为.NET的补充,Powershell可以加载和访问COM对象。

查看可用的COM对象

每一个COM对象都有存储在注册表中的唯一标识符,想遍历访问可用的COM对象,可是直接访问注册表。

复制代码 代码如下:

Dir REGISTRY::HKEY_CLASSES_ROOTCLSID  -include PROGID -recurse | foreach {$_.GetValue("")}
DAO.DBEngine.36
DAO.PrivateDBEngine.36
DAO.TableDef.36
DAO.Field.36
DAO.Index.36
PS C:Powershell> Dir REGISTRY::HKEY_CLASSES_ROOTCLSID -include PROGID -recurse
| foreach {$_.GetValue("")} | select -First 10
DAO.DBEngine.36
DAO.PrivateDBEngine.36
DAO.TableDef.36
DAO.Field.36
DAO.Index.36
DAO.Group.36
DAO.User.36
DAO.QueryDef.36
DAO.Relation.36
file
......

怎样使用COM对象

一旦得到了COM对象的ProgID,就可以使用New-Object创建COM对象,只需要指定参数为-comObject。

复制代码 代码如下:

PS C:Powershell> New-Object -ComObject DAO.Relation.36

Properties     : System.__ComObject
Name           :
Table          :
ForeignTable   :
Attributes     : 0
Fields         : System.__ComObject
PartialReplica :
COM对象的和.NET对象相似,任然可是使用Get-Member 得到该对象的所有熟悉和方法:

PS C:Powershell> $DBEng=New-Object -ComObject DAO.PrivateDBEngine.36
PS C:Powershell> $DBEng | Get-Member -me *method

   TypeName: System.__ComObject#{00000021-0000-0010-8000-00aa006d2ea4}

Name                MemberType Definition
----                ---------- ----------
BeginTrans          Method     void BeginTrans ()
CommitTrans         Method     void CommitTrans (int)
CompactDatabase     Method     void CompactDatabase (string, string, Variant...
CreateDatabase      Method     Database CreateDatabase (string, string, Vari...
CreateWorkspace     Method     Workspace CreateWorkspace (string, string, st...
FreeLocks           Method     void FreeLocks ()
Idle                Method     void Idle (Variant)
ISAMStats           Method     int ISAMStats (int, Variant)
OpenConnection      Method     Connection OpenConnection (string, Variant, V...
OpenDatabase        Method     Database OpenDatabase (string, Variant, Varia...
RegisterDatabase    Method     void RegisterDatabase (string, string, bool, ...
RepairDatabase      Method     void RepairDatabase (string)
Rollback            Method     void Rollback ()
SetDataAccessOption Method     void SetDataAccessOption (short, Variant)
SetDefaultWorkspace Method     void SetDefaultWorkspace (string, string)
SetOption           Method     void SetOption (int, Variant)
_30_CreateWorkspace Method     Workspace _30_CreateWorkspace (string, string...

PS C:Powershell> $DBEng | Get-Member -me *property

   TypeName: System.__ComObject#{00000021-0000-0010-8000-00aa006d2ea4}

Name            MemberType Definition
----            ---------- ----------
DefaultPassword Property   string DefaultPassword () {set}
DefaultType     Property   int DefaultType () {get} {set}
DefaultUser     Property   string DefaultUser () {set}
Errors          Property   Errors Errors () {get}
IniPath         Property   string IniPath () {get} {set}
LoginTimeout    Property   short LoginTimeout () {get} {set}
Properties      Property   Properties Properties () {get}
SystemDB        Property   string SystemDB () {get} {set}
Version         Property   string Version () {get}
Workspaces      Property   Workspaces Workspaces () {get}

常用的COM对象中有

WScript.Shell,
WScript.Network,
Scripting.FileSystemObject,
InternetExplorer.Application,
Word.Application,
Shell.Application

下面的例子使用WScript.shell COM对象和它的方法CreateShortcut()做桌面上创建一个Powershell快捷方式:

复制代码 代码如下:

PS C:Powershell> $wshell=New-Object -ComObject WScript.shell
PS C:Powershell> $path=[environment]::GetFolderPath(''Desktop'')
PS C:Powershell> $link=$wshell.CreateShortcut("$pathPowershell.lnk")
PS C:Powershell> $link | Get-Member

   TypeName: System.__ComObject#{f935dc23-1cf0-11d0-adb9-00c04fd58a0b}

Name             MemberType Definition
----             ---------- ----------
Load             Method     void Load (string)
Save             Method     void Save ()
Arguments        Property   string Arguments () {get} {set}
Description      Property   string Description () {get} {set}
FullName         Property   string FullName () {get}
Hotkey           Property   string Hotkey () {get} {set}
IconLocation     Property   string IconLocation () {get} {set}
RelativePath     Property   string RelativePath () {set}
TargetPath       Property   string TargetPath () {get} {set}
WindowStyle      Property   int WindowStyle () {get} {set}
WorkingDirectory Property   string WorkingDirectory () {get} {set}

PS C:Powershell> $link.TargetPath=''Powershell.exe''
PS C:Powershell> $link.Description="启动Powershell"
PS C:Powershell> $link.WorkingDirectory=$PROFILE
PS C:Powershell> $link.IconLocation=''Powershell.exe''
PS C:Powershell> $link.Save()

您可能感兴趣的文章:
  • Windows Powershell条件表达式之条件操作符
  • Windows Powershell Where-Object 条件过滤

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex 关于 Windows 10 统计数据的最后一份报告是几个月前的。从那以后发生了很多事情。因为Windows 10 2004的比例明显缩水,Windows 10 21H1的比例有所增加。

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增长 - 2021 年 7 月

事实上,现在有 26.6% 的用户在使用 Windows 10 21H1。Windows 10 20H2 的份额从 40.1% 下降到 36.3%,而 2004 年的份额从 40.6% 下降到“仅”24.6%。

有趣的是内部版本用户数量的增加。这里的比例通常最多在 0.4% 和 0.7% 之间波动。但现在仅 Windows 11 就已经拥有 0.9% 的份额,Windows 10 Insider 已经拥有 0.2% 的份额。现在已经总结了旧版本的比例。与 1903 年和 1909 年一起是 11.5%。

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

如何解决Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复??

除了一项功能外,我还使用 Wine 成功运行了 Windows 程序。该程序可以设置为在 texlive 发行版中启动 pdflatex,当它启动时,它等待查看结果是否成功,然后复制/移动文件。但是在 Linux 上,我无法安排它像在 Windows 上那样等待 pdflatex 完成,因此过早地复制/移动文件并且 pdflatex 无法找到它们。

有一个对话框可以用来保存任意命令,当我按下应用程序中的 pdflatex 按钮时,该命令将被执行。我将此对话框指向 Windows 上的 C:\texlive\2020\bin\win32\pdflatex.exe 并且它可以工作。除了不等待的问题外,我成功地放置了这个命令,以便在Linux上使用wine运行pdflatex。

Z:/usr/bin/gnome-terminal --wait -- /home/nonnull/bin/runlatex/runlatex.sh "%f"

通过将 runlatex.sh 中的最后一个命令设为 exec /bin/bash,终端保持打开状态,因此我可以看到 pdflatex 的所有输出,并知道它正在使用 runlatex.sh 必须找出的正确文件运行通过将传递给它的 Windows 路径转换为其实际路径。 pdflatex 以各种方式抱怨它在那里创建的文件,然后在运行期间不存在。即使终端是打开的,所以没有完成执行,应用程序抱怨 pdflatex 没有正确完成,甚至在 pdflatex 的输出文本完成向下滚动终端之前。当我省略 exec 时,应用程序的行为不会改变终端立即关闭时的命令 pdflatex 完成。

Wine 是怎么回事,命令在完成运行之前不会保持附加状态?我该怎么办?对可以绕过这个困难的命令或机制有什么建议吗?如果需要的话,我准备编写一个 win32 程序来进行调解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计

Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计

WIN11地平线上出现,它的设置为开始滚动10月5日提前计划的推出,微软边缘93已经发布了两个实验功能的支持:菜单和一个全新设计的现代滚动条相匹配的良好作风的视窗 11。

Microsoft Edge 93 具有多项改进和一些新功能。例如,微软已经启用了对类似 Chrome 的标签组的支持,旨在帮助用户有效地查找标签,以便他们可以轻松切换和管理标签。

Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计改进

Edge 93 还支持 PDF 文档的“从上次中断的地方继续”。同样,您可以使用将鼠标悬停在支持的视频上时出现的新工具栏,轻松地以画中画模式观看视频。工具栏只是让您在画中画窗口中查看该视频。

垂直选项卡设计已更新为 edge://settings/appearance 中的一个新选项,以隐藏浏览器的标题栏。除了这些改进之外,微软还引入了对新实验性功能的支持:Windows 11 Visual Updates 和 Overlay 滚动条

第一个标志将打开云母效果,这是一种新的 Windows 11 独有的设计材料,可自动将桌面背景的颜色应用于活动窗口。云母效果仅适用于浏览器的标题栏,如下面的屏幕截图所示。

Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计改进

它还为 Edge 菜单和上下文菜单启用 Fluent Design 的亚克力效果(部分透明)。如果您在 Windows 11 上启用该标志,它将调整菜单字体的大小,使其看起来更大一些。除了字体变化,它还使一些按钮居中,包括最小化、最大化和关闭。

另一方面,Windows 11 和 Windows 10 都完全支持叠加滚动条。叠加滚动条标志为浏览器的默认滚动条提供了精简设计,并且还支持暗模式。

Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计改进

更重要的是,“覆盖滚动条”功能旨在与 Windows 11 应用程序(如设置和资源管理器)的外观和感觉相匹配。

为了尝试这些功能,您需要 Edge 93(稳定版)或更新版本。更新到最新版本后,打开 Edge 标志菜单并启用 Windows 11 视觉更新标志。

要尝试 Edge 93 中的新滚动条,请打开 Edge 的属性选项卡并将以下代码添加到目标字段:

--enable-features=OverlayScrollbar,OverlayScrollbarWinStyle,OverlayScrollbarWinStyleAnimation

微软可能会在未来几个月为 Windows 11 用户引入更多的 Edge 视觉更新。

Microsoft 暂时禁用某些 Windows 11 PC 的 Windows 更新估

Microsoft 暂时禁用某些 Windows 11 PC 的 Windows 更新估

旨在改善用户更新体验的 Windows 11 更改之一涉及在 Windows 更新中显示的估计值,并让他们知道完全安装可用更新需要多长时间。

毫无疑问,这些信息肯定会派上用场,特别是考虑到 Microsoft 对所有事情生产力的痴迷,但关于它的一个关键事情是公司必须使其尽可能准确。

最新的 Windows 11 预览版在这方面进行了重要更改,因为 Microsoft 已决定禁用对具有标准 HDD 的计算机的估计。换句话说,只有内置 SSD 的 PC 才会继续显示更新估计值,尽管微软表示这一切只是暂时的,直到它设法处理一系列影响此功能的错误。

Microsoft 暂时禁用某些 Windows 11 PC 的 Windows 更新估计

Windows 11 将在大约两个月内推出

“我们一直在测试在“开始”下的电源菜单、重新启动通知、“Windows 更新设置”页面和显示在下方的 Windows 更新图标内等位置查看更新重新启动估计需要多长时间的能力。任务栏的右侧,”该公司解释说。

“我们正在对此功能进行小幅调整,使其仅在配备 SSD 的 PC 上显示。如果您的 PC 具有标准硬盘驱动器,您将不再看到估算值。一旦我们解决了更多错误,我们希望将估算值带回到带有 HDD 的 PC 上。”

Windows 11 的开发速度非常快,从理论上讲,距离操作系统应该为所有人推出的那一刻只有两个月的时间。微软本身暗示 Windows 11 可能会在 10 月上线,免费升级优惠将持续到 2022 年,适用于符合条件的设备。

关于Windows Powershell创建对象powershell创建文件命令的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、Microsoft Edge 93 在 Windows 11 和 Windows 10 上获得设计、Microsoft 暂时禁用某些 Windows 11 PC 的 Windows 更新估等相关内容,可以在本站寻找。

本文标签: