我只是在StackOverflow上找到有关如何更改XML元素的属性值的内容.
但是我们如何使用PowerShell更改元素本身的值?
我目前有:
XML
<Task>
<Settings>
...
</Settings>
<Actions Context="Author">
<Exec>
<Command>blablabla</Command>
<Arguments>CHANGETHISVALUE</Arguments>
</Exec>
</Actions>
</Task>
Run Code Online (Sandbox Code Playgroud)
脚本
$filePathToTask = C:\Task.xml
$xml = New-Object XML
$xml.Load($filePathToTask)
$element = $xml.SelectSingleNode("//Arguments")
$element.InnerText("newtext")
$xml.Save($filePathToTask)
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法在最后一个变量上使用方法.我究竟做错了什么?
编辑
我得到的错误是你不能在空值表达式上调用方法
我认为我的问题在于:
$ElementToChange = $xml.SelectSingleNode("//Arguments")
Run Code Online (Sandbox Code Playgroud)
哪个保持null,但我尝试了类似的方法.SelectNodes并且使用//Arguments标签但仍然没有成功
所以我创建了一个安装 Windows 更新的 PowerShell 脚本,
您可能知道,在安装更新时,为了安装脚本,PC 可能必须重新启动(当仍有更新时)。
我实现的是在脚本开始时导入并在每次重新启动后运行脚本的任务(并在登录屏幕上安装剩余的脚本),直到没有更多的脚本剩下。
最后一次更新后,脚本将从任务调度程序中删除任务。
我的实现(下载/安装/添加任务/删除任务)完美运行。
只是我的脚本在重新启动后不会运行,我不知道为什么!
电脑重新启动后,脚本不再运行,任务调度程序中的错误状态为0x1
我做了一些谷歌搜索,发现参数可能是错误的(第三张图片当然路径是正确的)但我已经尝试过(在参数字段中):
任务调度程序没有启动我的脚本可能是什么问题?
谢谢
编辑
添加了作为批处理作业属性登录的屏幕截图:
我有一个以这种方式检索的 Active Directory 用户列表:
$users = Get-AdUser -Filter {(Enabled -eq "True" )} -Properties Description
Run Code Online (Sandbox Code Playgroud)
问题是我有一组基于他们的描述的特定用户:
我所做的是创建这样的子列表:
$Admins = $users | Where-Object Description -eq 'Administrator'
Run Code Online (Sandbox Code Playgroud)
然而问题是,没有标准化。创建用户的人可以写“Admin”或“Administrator”或“adm”,...这会导致我的子列表不包含所有作为管理员的用户。
我所做的是创建了一个字符串数组:
$Admin_User_Strings = @("adm", "admin", "administrator")
Run Code Online (Sandbox Code Playgroud)
我想在我的子列表中使用这个数组,但这似乎不起作用:
$Admins = $users | Where-Object $Admin_User_Strings -contains Description
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Where-Object :找不到接受参数“System.Object[]”的位置参数。
所以我的问题是,我怎样才能让以下行:
$Admins = $users | Where-Object Description -eq 'Administrator'
Run Code Online (Sandbox Code Playgroud)
接受更多“管理员”输入方式?
所以我有以下形式:
我想要实现的目标如下:
输入名称后,我希望只需单击首字母文本框即可生成名称的首字母.
我找到了以下方法来获取字符串的第一个字符:
string EngineerName = tb_Name.Text.ToString();
EngineerName.Split(' ').ToList().ForEach(i => Console.Write(i[0] + " "));
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何将字符列表分配给文本textbox?
我试过了:
private void Tb_Initials_Click(object sender, EventArgs e)
{
string EngineerName = tb_Name.Text.ToString();
EngineerName.Split(' ').ToList().ForEach(i => Console.Write(i[0] + " "));
tb_Initials.Text = EngineerName;
}
Run Code Online (Sandbox Code Playgroud)
但这只是填写了完全相同名称的文本框...
我正在尝试将分钟转换为十进制小时数并舍入到最接近的十五分钟(向上舍入).
基本上:
15分钟= 0.25小时
25分钟= 0.5小时
30分钟= 0.5小时
50分钟= 1小时
60分钟= 1小时
我没有在stackoverflow上找到任何相关内容,但另一个网站告诉我:
var hours = Math.Round((minutes * 100 ) / 60.0);
Run Code Online (Sandbox Code Playgroud)
哪个不接近结果.
我知道我不能使用Math.Round()(因为它将它转换为int?).相同TimeSpan(因为它.TotalHours在a中给出double).
一个好的方法可以从将它除以60开始?
我希望有人能解释一下C++中的while和do之间的区别
我刚开始学习C++并且使用这段代码我似乎得到了相同的输出:
int number =0;
while (number<10)
{
cout << number << endl;
number++
}
Run Code Online (Sandbox Code Playgroud)
而这段代码:
int number=0;
do
{
cout << number << endl;
number++
} while (number<10);
Run Code Online (Sandbox Code Playgroud)
这两个计算中的输出都是相同的.所以似乎没有区别.我试图寻找其他的例子,但他们看起来很难理解,因为它包含了数学上的东西和其他我尚未学到的东西.我的书也对我的问题给出了一种迷幻的答案.
是否有一个更简单的例子来显示这两个循环之间的区别?
我很好奇
我有一个在远程机器上安装远程桌面服务的脚本(来自 DC)。
我现在正处于检查连接代理(服务器)和连接主机(服务器)上是否安装了 RDS 的阶段。
我想使用 invoke-command 因为远程 powershell 会话似乎太复杂了。
这是我的代码:
$res = Invoke-Command -ComputerName "testpc.eil.local" -ScriptBlock {
if((Get-WindowsFeature -Name "Remote-Desktop-Services").Installed -eq 1)
{
#i need this output (true or false or a string)
}
else
{
#i need this output (true or false or a string)
}
}
Write-Host $res
Run Code Online (Sandbox Code Playgroud)
但我的问题是,如何将 invoke-command 中脚本块的输出封装在 DC 可以访问的变量中?如果 RDS 已成功安装或未能写入日志文件,我正在尝试写入
我们如何封装函数的输出并将其传递给运行它的机器?
谢谢
嘿,我在使用C++学习数组时遇到了问题.
我必须开发的程序是一个简单的数组,它读入一个名字(在char中)并在输入后打印它.
我的程序读取它但输出符号,而不是字符?有人可以解释一下我做错了什么吗?
Char name[10];
cout <<"Give a name: ";
cin >> name[10];
cout << endl;
for (int i=0; i<strlen(name);i++)
{
cout << name[i];
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释我的代码中出错的地方并将其放在符号中,而不是我给出的普通字符吗?
powershell ×4
c# ×2
c++ ×2
scripting ×2
algorithm ×1
arrays ×1
ceil ×1
loops ×1
rounding ×1
split ×1
storing-data ×1
symbols ×1
variables ×1
where-clause ×1
while-loop ×1
winforms ×1
xml ×1